修复Big Sur JD-GUI启动失败,无法正常使用


升级Big Sur之后,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启动的时候,会调用/Applications/JD-GUI.app/Contents/MacOS/universalJavaApplicationStub.sh检查启动环境,其中涉及到Java安装环境的检查,根据错误提示,可以找到具体发生错误的代码:

if /usr/libexec/java_home -F -v ${JVMVersion}; then

其中${JVMVersion}是从/Applications/JD-GUI.app/Contents/Info.plist文件中读取JVMVersion参数,在Info.plist文件中默认配置JVMVersion参数值为1.8+,通过将参数代入/usr/libexec/java_home -F -v命令执行,会发现报如下错误:

xieshaohu@MBP-2018 ~ % /usr/libexec/java_home -F -v 1.8+
The operation couldn’t be completed. Unable to locate a Java Runtime that supports (null).
Please visit http://www.java.com for information on installing Java.

这个命令出错的原因是我本地没有安装1.8的jdk,或者本身这个版本号就不应该设置为1.8+,将参数改成我本地已经安装的openjdk版本11后,命令已经能够正常执行:

xieshaohu@MBP-2018 ~ % /usr/libexec/java_home -F -v 11  
/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home

命令测试通过后,将/Applications/JD-GUI.app/Contents/Info.plist文件中JVMVersion参数修改为11,JD-GUI已经能够正常启动。

延伸知识点:

  • macOS的jdk默认安装在/Library/Java/JavaVirtualMachines下
  • 可以通过/usr/libexec/java_home命令显示当前jdk的java_home位置,而JD- GUI是因为参数判断出错,导致无法正常获取java主目录,所以无法启动。
  • /usr/libexec/java_home -V命令可以列出本机安装的所有jdk版本
  • /usr/libexec/java_home -V 11 命令可以列出指定版本的jdk主目录

留下评论

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理