JMeter项目Maven打包调用bzm Parallel Controller遇InaccessibleObject异常求助
解决bzm Parallel Controller在Maven执行时的反射访问异常
问题原因
你遇到的InaccessibleObjectException是因为Java 9及以上版本的模块系统限制了反射对java.lang.Thread.inheritableThreadLocals字段的访问,而0.11版本的bzm Parallel Controller依赖这种反射操作。GUI模式正常是因为可能使用的是Java 8(无模块系统限制),或者JMeter GUI启动时自动添加了兼容参数。
解决办法
1. 升级bzm Parallel Controller插件版本
0.12及以上版本的插件已修复Java模块系统兼容问题,在Maven依赖中更新版本即可:
<dependency> <groupId>com.blazemeter</groupId> <artifactId>jmeter-parallel</artifactId> <version>0.12</version> <!-- 或更高稳定版本 --> <scope>test</scope> </dependency>
2. 添加JVM启动参数(无法升级插件时)
如果暂时不能升级插件,给Maven执行JMeter的过程添加JVM参数,开放模块访问权限:
- 若使用
jmeter-maven-plugin,在插件配置中加入jvmArgs:
<plugin> <groupId>com.lazerycode.jmeter</groupId> <artifactId>jmeter-maven-plugin</artifactId> <version>3.5.0</version> <!-- 匹配你的插件版本 --> <configuration> <jvmArgs> <jvmArg>--add-opens java.base/java.lang=ALL-UNNAMED</jvmArg> </jvmArgs> <!-- 其他原有配置 --> </configuration> </plugin>
- 或者直接在Maven命令中指定参数:
mvn clean verify -Djmeter.jvmargs="--add-opens java.base/java.lang=ALL-UNNAMED"
3. 统一Java版本
检查Maven使用的Java版本是否与JMeter GUI一致。如果GUI用的是Java 8,将Maven的JDK切换到Java 8——Java 8没有模块系统,不会触发该异常。
内容的提问来源于stack exchange,提问作者Tocotti
相关产品推荐
相关产品推荐

