Mac OS使用temurin-18等JDK启动SQLWorkbenchJ提示无法加载JRE
该问题与相关技术帖关联,但账号声望不足无法在帖下发布评论
问题描述:本机SQL Workbench J无法正常调用Java环境启动
我的操作步骤如下:
- 执行命令
brew install --cask sqlworkbenchj安装SQLWorkbenchJ - 首次尝试启动SQL Workbench J时,系统提示该应用为非受信任应用
- 进入系统偏好设置->安全性与隐私->通用页面,选择允许启动SQL Workbench J
- 再次尝试启动SQL Workbench J,弹出错误提示:无法加载
Java Runtime environment - 按照相关帖的指引操作,具体步骤为:
- 使用文本编辑器打开
Applications/SQLWORKbenchJ.app/Contents/Info.plist文件 - 在文件中
<key>JVMArguments</key>配置项前添加如下代码:<key>JVMRuntime</key> <string>temurin-18.jdk</string> - 保存该配置文件
- 在终端执行如下命令创建软链接:
ln -s /Library/Java/JavaVirtualMachines/temurin-18.jdk /Applications/SQLWorkbenchJ.app/Contents/PlugIns/
- 使用文本编辑器打开
- 完成上述操作后再次尝试启动SQL Workbench J,仍然弹出无法加载
Java Runtime environment的错误提示
我还尝试将Info.plist配置和软链接对应的JDK替换为sapmachine-jdk-11.0.11.jdk,但依然出现相同错误。
我尚未尝试其他版本的jdk,如果有适配的JDK版本推荐以及对应配置操作指引,我可以按照指引尝试配置。
预期结果:SQLWorkbenchJ可正常启动,不再出现Java运行时相关错误
解决方法
先排查两个操作中的常见错误,这俩是90%的人配置失败的核心原因:
- 路径大小写错误:你之前写的Info.plist路径是
SQLWORKbenchJ.app,正确路径是/Applications/SQLWorkbenchJ.app,大小写不匹配等于修改了不存在路径下的文件,配置根本没有生效 - 改完app包内容后没清除系统安全缓存:macOS对修改过包内容的app会加隔离标记,阻止它读取内部PlugIns目录下的文件,哪怕软链接建对了也识别不到
完整正确配置流程
- 第一步先装适配的JDK版本:SQL Workbench/J 稳定适配Temurin 17(LTS长期支持版),不要用18这类非长期支持的测试版JDK,也不要用太旧的JDK8,兼容性问题最多。直接用brew安装即可:
brew install --cask temurin@17 - 清理之前的错误配置:
先删掉之前建错的软链接:rm -rf /Applications/SQLWorkbenchJ.app/Contents/PlugIns/*.jdk - 打开正确路径下的配置文件:
open -a TextEdit /Applications/SQLWorkbenchJ.app/Contents/Info.plist - 找到文件里的
<key>JVMArguments</key>行,在它正上方插入下面两行配置,注意string标签里的JDK名称要和你安装的JDK文件夹名完全一致,temurin17对应的名称就是temurin-17.jdk:<key>JVMRuntime</key> <string>temurin-17.jdk</string> - 保存配置文件后,执行命令创建软链接,注意软链接要直接放在PlugIns目录下,命名和配置里的JDK名称一致:
ln -s /Library/Java/JavaVirtualMachines/temurin-17.jdk /Applications/SQLWorkbenchJ.app/Contents/PlugIns/temurin-17.jdk - 最后执行命令清除app的系统隔离标记,让系统允许修改后的app正常读取内部文件:
xattr -cr /Applications/SQLWorkbenchJ.app - 如果启动时还是报签名相关错误,再执行一行本地重签名命令即可:
sudo codesign --force --deep --sign - /Applications/SQLWorkbenchJ.app
操作完直接启动SQL Workbench/J就可以正常打开,不会再弹出Java运行时加载失败的提示。如果首次启动弹权限提醒,再去安全性与隐私页面点一次允许即可。
内容的提问来源于stack exchange,提问作者dlaz
相关产品推荐
相关产品推荐

