点击JMeter可执行Jar文件无响应,主题兼容问题求助
JMeter启动无响应:DarkLaf主题兼容性问题的原因与解决方法
问题原因
这确实是Java版本与DarkLaf主题库的兼容性问题,你的推测完全正确。
从错误日志能明确看到:
- JMeter默认启用了
DarkLaf深色主题(版本2.1.1),该主题库的代码试图访问java.desktop模块下sun.swing包的内部类(如SwingUtilities2、DefaultLookup) - Java 9及以上版本引入的模块化系统(JPMS),默认禁止未命名模块(JMeter的Jar属于此类)访问JDK内部的非公开API,因此抛出
IllegalAccessError,直接导致UI线程崩溃,JMeter无法正常启动。
解决方法
方法1:切换到JMeter默认主题(最简单有效)
- 打开JMeter安装目录下
bin文件夹里的jmeter.properties配置文件 - 找到
jmeter.laf配置项,将其值修改为默认主题:
若使用Windows系统,也可切换为系统原生主题:jmeter.laf=javax.swing.plaf.metal.MetalLookAndFeeljmeter.laf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel - 保存文件后重新启动JMeter即可。
方法2:升级DarkLaf主题库(保留深色主题)
旧版DarkLaf(2.1.1)未适配Java模块化系统,升级到3.x及以上版本即可解决API访问问题:
- 下载适配JPMS的最新版
darklaf-core.jar - 替换JMeter安装目录
lib文件夹下的darklaf-core-2.1.1.jar - 重新启动JMeter,深色主题即可正常加载。
方法3:添加JVM启动参数(临时绕过限制)
如果必须使用旧版DarkLaf,可通过JVM参数临时允许访问内部API:
- 直接用命令行启动:
java --add-exports=java.desktop/sun.swing=ALL-UNNAMED --add-exports=java.desktop/sun.awt=ALL-UNNAMED -jar ApacheJMeter.jar - 或者修改JMeter的启动脚本(
jmeter.bat/jmeter.sh),把上述参数添加到JVM启动参数列表中。
注意:此方法仅作为临时方案,长期使用可能因JDK版本更新失效,优先推荐方法1或2。
内容的提问来源于stack exchange,提问作者Bhavya Dutta
相关产品推荐
相关产品推荐

