小工具知识网

当前位置: 首页 > 行业知识 > MacOS安装反编译工具JD-GUI以及解决无法打开的问题

行业知识

MacOS安装反编译工具JD-GUI以及解决无法打开的问题

2026-10-31 05:19:57 来源:互联网转载

目录

一.下载地址

二.安装

三.问题

四.解决办法

1.显示包内容

2.找到Contents/MacOS/universalJavaApplicationStub.sh

3.修改sh文件

4.保存后再次打开即可


一.下载地址

Java Decompiler

二.安装

将下载下来的 jd-gui-osx-1.6.6.tar 解压,然后将 JD-GUI.app 文件拷贝到 Applications 应用程序目录里面

三.问题

打开jd-gui提示找不到jdk,想都不用想,一定不是没有安装jdk或者没有配置环境变量,除非你是真的没有安装

四.解决办法

1.显示包内容

2.找到Contents/MacOS/universalJavaApplicationStub.sh

3.修改sh文件

内容修改为下面的即可

#!/bin/bash###################################################################################                                 ## universalJavaApplicationStub    ##                                 ## A BASH based JavaApplicationStub for Java Apps on Mac OS X                     ## that works with both Apple's and Oracle's plist format.                        ##                                 ## Inspired by Ian Roberts stackoverflow answer                                   ## at http://stackoverflow.com/a/17546508/1128689                                 ##                                 ## @author    Tobias Fischer       ## @url       https://github.com/tofi86/universalJavaApplicationStub              ## @date      2023-02-04           ## @version   3.3.0                ##                                 ####################################################################################                                 ## The MIT License (MIT)           ##                                 ## Copyright (c) 2014-2023 Tobias Fischer                                         ##                                 ## Permission is hereby granted, free of charge, to any person obtaining a copy   ## of this software and associated documentation files (the "Software"), to deal  ## in the Software without restriction, including without limitation the rights   ## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell      ## copies of the Software, and to permit persons to whom the Software is          ## furnished to do so, subject to the following conditions:                       ##                                 ## The above copyright notice and this permission notice shall be included in all ## copies or substantial portions of the Software.                                ##                                 ## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR     ## IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,       ## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE    ## AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER         ## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,  ## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE  ## SOFTWARE.                       ##                                 #################################################################################### function 'stub_logger()'## A logger which logs to the macOS Console.app using the 'syslog' command## @param1  the log message# @return  void################################################################################function stub_logger() {syslog -s -k \Facility com.apple.console \Level Notice \Sender "$(basename "")" \Message "[$$][${CFBundleName:-$(basename "")}] "}# set the directory abspath of the current# shell script with symlinks being resolved############################################PRG=while [ -h "$PRG" ]; dols=$(ls -ld "$PRG")link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null)if expr "$link" : '^/' 2> /dev/null >/dev/null; thenPRG="$link"elsePRG="$(dirname "$PRG")/$link"fidonePROGDIR=$(dirname "$PRG")stub_logger "[StubDir] $PROGDIR"# set files and folders############################################# the absolute path of the app packagecd "$PROGDIR"/../../ || exit 11AppPackageFolder=$(pwd)# the base path of the app packagecd .. || exit 12AppPackageRoot=$(pwd)# set Apple's Java folderAppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java# set Apple's Resources folderAppleResourcesFolder="${AppPackageFolder}"/Contents/Resources# set Oracle's Java folderOracleJavaFolder="${AppPackageFolder}"/Contents/Java# set Oracle's Resources folderOracleResourcesFolder="${AppPackageFolder}"/Contents/Resources# set path to Info.plist in bundleInfoPlistFile="${AppPackageFolder}"/Contents/Info.plist# set the default JVM Version to a null stringJVMVersion=""JVMMaxVersion=""# function 'plist_get()'## read a specific Plist key with 'PlistBuddy' utility## @param1  the Plist key with leading colon ':'# @return  the value as String or Array################################################################################plist_get(){/usr/libexec/PlistBuddy -c "print " "${InfoPlistFile}" 2> /dev/null}# function 'plist_get_java()'## read a specific Plist key with 'PlistBuddy' utility# in the 'Java' or 'JavaX' dictionary ()## @param1  the Plist :Java(X):Key with leading colon ':'# @return  the value as String or Array################################################################################plist_get_java(){plist_get ${JavaKey:-":Java"}}# read Info.plist and extract JVM options############################################# read the program name from CFBundleNameCFBundleName=$(plist_get ':CFBundleName')# read the icon file nameCFBundleIconFile=$(plist_get ':CFBundleIconFile')# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1exitcode=$?JavaKey=":Java"# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple modeif [ $exitcode -ne 0 ]; then/usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1exitcode=$?JavaKey=":JavaX"fi# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present)if [ $exitcode -eq 0 ]; thenstub_logger "[PlistStyle] Apple"# set Java and Resources folderJavaFolder="${AppleJavaFolder}"ResourcesFolder="${AppleResourcesFolder}"# set expandable variablesAPP_ROOT="${AppPackageFolder}"APP_PACKAGE="${AppPackageFolder}"JAVAROOT="${AppleJavaFolder}"USER_HOME="$HOME"# read the Java WorkingDirectoryJVMWorkDir=$(plist_get_java ':WorkingDirectory' | xargs)# set Working Directory based upon PList valueif [[ ! -z ${JVMWorkDir} ]]; thenWorkingDirectory="${JVMWorkDir}"else# AppPackageRoot is the standard WorkingDirectory when the script is startedWorkingDirectory="${AppPackageRoot}"fi# expand variables $APP_PACKAGE, $APP_ROOT, $JAVAROOT, $USER_HOMEWorkingDirectory=$(eval echo "${WorkingDirectory}")# read the MainClass nameJVMMainClass="$(plist_get_java ':MainClass')"# read the SplashFile nameJVMSplashFile=$(plist_get_java ':SplashFile')# read the JVM Properties as an array and retain spacesIFS=$'\t\n'JVMOptions=($(xargs -n1 

上一篇:边缘计算服务器盒子怎么用?

下一篇:怎么做网页代码?