1

I have a jmeter project including a "bzm Parallel Controller" plugin in order to parallelize some/more http requests.

That jmeter project works fine working by GUI or by non-GUI mode So I have also built with maven,

Then I have included and compiled by mvn the jmeter.parallel.0.11 jar plugin as resource of my final project but when I try to execute it, I got a bad exception:

ERROR o.a.j.t.JMeterThread: Error while processing sampler: 'bzm DASHBOARD_COMMON'. java.lang.reflect.InaccessibleObjectException: Unable to make field java.lang.ThreadLocal$ThreadLocalMap java.lang.Thread.inheritableThreadLocals accessible: module java.base does not "opens java.lang" to unnamed module @1e802ef9 at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[?:?] at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[?:?] at java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[?:?] at java.lang.reflect.Field.setAccessible(Field.java:172) ~[?:?] at com.blazemeter.jmeter.controller.ParallelSampler$ParallelThreadFactory.cleanThreadContext(ParallelSampler.java:387) ~[jmeter-parallel-0.11.jar:?] at com.blazemeter.jmeter.controller.ParallelSampler$ParallelThreadFactory.newThread(ParallelSampler.java:374) ~[jmeter-parallel-0.11.jar:?] at java.util.concurrent.ThreadPoolExecutor$Worker.(ThreadPoolExecutor.java:630) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:920) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1364) ~[?:?] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123) ~[?:?] at com.blazemeter.jmeter.controller.ParallelSampler.sample(ParallelSampler.java:87) ~[jmeter-parallel-0.11.jar:?] at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:651) ~[ApacheJMeter_core-5.5.jar:5.5] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:570) ~[ApacheJMeter_core-5.5.jar:5.5] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) ~[ApacheJMeter_core-5.5.jar:5.5] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) ~[ApacheJMeter_core-5.5.jar:5.5] at java.lang.Thread.run(Thread.java:833) ~[?:?]

Do you have any idea how to solve it? Thanks

I have tried the execution of project directly by Jmeter GUI mode and it worked fine

I'm expecting that the behavior from Maven cli should be the same of Jmeter GUI mode, and the exception should be well managed

Tocotti
  • 11
  • 3
  • I hope there is a bug submitted to jmeter on this as it's untenable to be hacking into ThreadLocal internals like this. Using --add-opens, as suggested, should only be used as a very temporary workaround. The right solution is for jmeter to fix their code. – Alan Bateman Mar 03 '23 at 09:24

1 Answers1

0

I don't know how do you build or launch your "final project" but in order to avoid this error you need to add at least --add-opens java.base/java.lang=ALL-UNNAMED JVM argument

It would be also a good idea to add the others from jmeter.bat startup script, as of JMeter 5.5 they're:

--add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.swing=ALL-UNNAMED --add-opens java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens java.desktop/java.awt=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/sun.awt.shell=ALL-UNNAMED
Dmitri T
  • 159,985
  • 5
  • 83
  • 133