jmockit, openJDK и UnsatisfiedLinkError - PullRequest
4 голосов
/ 05 марта 2012

При попытке запустить тест с JMockit на OpenJDK 6 я сталкиваюсь с ошибкой:

[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

Я заглянул в папку / usr / local / openjdk6 / jre / lib / amd64 / и нашел libattach.so там

Однако добавление -Djava.library.path = / usr / local / openjdk6 / jre / lib / amd64 не решило проблему.Что еще я могу попробовать?

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Попробуйте добавить <jdk6home>/lib/tools.jar к пути к классам, до jmockit.jar.Если это не решит проблему, передача -javaagent:jmockit.jar в качестве параметра инициализации JVM определенно должна.

1 голос
/ 28 февраля 2013

То, что я заметил в моем случае, я указывал на JRE6 вместо JDK6. Как только я указываю свой JAVA_HOME на jdk6, это решает проблему

...