Jmockit, openJDK and UnsatisfiedLinkError

When trying to run a test using JMockit in OpenJDK 6, I encountered an error:

[junit] Exception in thread "main" java.lang.ExceptionInInitializerError [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:353) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906) [junit] Caused by: java.lang.IllegalStateException: Native library for Attach API not available in this JRE [junit] at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:81) [junit] at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:54) [junit] at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21) [junit] at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:200) [junit] at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:215) [junit] at junit.framework.TestResult.<clinit>(TestResult.java:19) [junit] ... 3 more [junit] Caused by: java.lang.UnsatisfiedLinkError: sun.tools.attach.LinuxVirtualMachine.isLinuxThreads()Z [junit] at sun.tools.attach.LinuxVirtualMachine.isLinuxThreads(Native Method) [junit] at sun.tools.attach.LinuxVirtualMachine.<clinit>(LinuxVirtualMachine.java:364) [junit] at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:71) [junit] ... 8 more 

I looked in the folder / usr / local / openjdk6 / jre / lib / amd64 / and found libattach.so there

However, adding -Djava.library.path = / usr / local / openjdk6 / jre / lib / amd64 did not solve the problem. What else can I try?

+4
source share
2 answers

Try adding <jdk6home>/lib/tools.jar to the classpath before jmockit.jar. If this does not solve the problem, passing -javaagent:jmockit.jar as the JVM initialization parameter must.

+4
source

What I noticed in my case, I was pointing to JRE6 instead of JDK6. As soon as I point my JAVA_HOME to jdk6, it fixed the problem

+1
source

Source: https://habr.com/ru/post/1399754/


All Articles