2012-03-05 24 views
4

jmockit、OpenJDKの6にJMockitでテストを実行しようとすると、私はエラーに直面していますOpenJDKのとないUnsatisfiedLinkError

[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の内側に見えましたそして見つけしかし-Djava.library.path =は/ usr/local/openjdk6/JRE/libに/ AMD64を追加することが libattach.so

は、問題を解決していませんでした。他に何を試すことができますか?

答えて

4

<jdk6home>/lib/tools.jar jmockit.jarの前に追加してみてください。それでも問題が解決しない場合は、-javaagent:jmockit.jarをJVM初期化パラメータとして渡すのは間違いありません。

1

私が私のケースで気づいたのは、JDK6の代わりにJRE6を指していたことです。 JAVA_HOMEをjdk6に向けるとすぐに問題は解決します

関連する問題