行业知识
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
上一篇:边缘计算服务器盒子怎么用?
下一篇:怎么做网页代码?