Mac使用jd-gui启动报错 This program requires Java 1.8+

Mac使用JD-GUI启动报错问题:

报错内容:

ERROR launching 'JD-GUI'

No suitable Java version found on your system!
This program requires Java 1.8+
Make sure you install the required Java version.

解决方法:

在“访达”中,右击JD-GUI图标,点击“显示包内容”。编辑“Contents/MacOS/universalJavaApplicationStub.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      2020-03-19                                                          #
# @version   3.0.6                                                               #
#                                                                                #
##################################################################################
#                                                                                #
# The MIT License (MIT)                                                          #
#                                                                                #
# Copyright (c) 2014-2020 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 "$0")" \
        Message "[$$][${CFBundleName:-$(basename "$0")}] $1"
}



# set the directory abspath of the current
# shell script with symlinks being resolved
############################################

PRG=$0
while [ -h "$PRG" ]; do
    ls=$(ls -ld "$PRG")
    link=$(expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null)
    if expr "$link" : '^/' 2> /dev/null >/dev/null; then
        PRG="$link"
    else
        PRG="$(dirname "$PRG")/$link"
    fi
done
PROGDIR=$(dirname "$PRG")
stub_logger "[StubDir] $PROGDIR"



# set files and folders
############################################

# the absolute path of the app package
cd "$PROGDIR"/../../ || exit 11
AppPackageFolder=$(pwd)

# the base path of the app package
cd .. || exit 12
AppPackageRoot=$(pwd)

# set Apple's Java folder
AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java

# set Apple's Resources folder
AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources

# set Oracle's Java folder
OracleJavaFolder="${AppPackageFolder}"/Contents/Java

# set Oracle's Resources folder
OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources

# set path to Info.plist in bundle
InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist

# set the default JVM Version to a null string
JVMVersion=""
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 $1" "${InfoPlistFile}" 2> /dev/null
}

# function 'plist_get_java()'
#
# read a specific Plist key with 'PlistBuddy' utility
# in the 'Java' or 'JavaX' dictionary (<dict>)
#
# @param1  the Plist :Java(X):Key with leading colon ':'
# @return  the value as String or Array
################################################################################
plist_get_java(){
    plist_get ${JavaKey:-":Java"}$1
}



# read Info.plist and extract JVM options
############################################

# read the program name from CFBundleName
CFBundleName=$(plist_get ':CFBundleName')

# read the icon file name
CFBundleIconFile=$(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>&1
exitcode=$?
JavaKey=":Java"

# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode
if [ $exitcode -ne 0 ]; then
    /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1
    exitcode=$?
    JavaKey=":JavaX"
fi


# read 'Info.plist' file in Apple style if exit code returns 0 (true, ':Java' key is present)
if [ $exitcode -eq 0 ]; then
    stub_logger "[PlistStyle] Apple"

    # set Java and Resources 
### SonarQube 对 JDK 版本的要求 对于 SonarQube 的运行环境而言,确保使用适当版本的 JDK 是至关重要的。SonarQube 官方文档指出,为了使 SonarQube 正常工作,需要安装特定版本以上的 JDK。 具体来说,SonarQube 要求最低支持的 Java 版本为 11 或更高版本[^1]。这意味着如果当前环境中配置的 `JAVA_HOME` 指向的是低于此版本的 JDK,则可能会遇到诸如 "the minimum required Java version is 8; your Java version...does not meet this requirement"[^2] 类似的错误消息。值得注意的是,在某些情况下即使已经正确设置了较高版本的 JDK,但由于系统路径或其他因素的影响,仍然可能出现类似的警告信息。 此外,其他应用程序如 JD-GUI 可能也会因为找不到合适的 Java 版本来阻止其正常启动,并给出相应的提示:“No suitable Java version found on your system! This program requires Java 1.8+ Make sure you install the required Java version.” 这进一步强调了确认并设置正确的 JDK 版本的重要性[^3]。 因此,建议检查现有的 JDK 安装情况以及环境变量配置 (`JAVA_HOME`) 是否指向了一个兼容且有效的 JDK 版本 (至少为 JDK 11),从而避免上述提到的各种潜在问题的发生。 ```bash # 验证已安装的Java版本 java -version # 设置 JAVA_HOME 环境变量(以 Linux/Unix为例) export JAVA_HOME=/path/to/jdk-11-or-later-version export PATH=$JAVA_HOME/bin:$PATH ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值