Tocotti
Tocotti

Reputation: 11

InaccessibleObjectException: Unable to make field java.lang.ThreadLocal$ThreadLocalMap java.lang.Thread.inheritableThreadLocals accessibl

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

Upvotes: 1

Views: 2297

Answers (1)

Dmitri T
Dmitri T

Reputation: 168122

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

Upvotes: 0

Related Questions