23

プロジェクトの単体テストに jmockit を使用しようとしたところ、次のエラーが発生しました。

java.lang.UnsatisfiedLinkError: no attach in java.library.path
java.lang.IllegalStateException: Native library for Attach API not available in this JRE
    at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:95)
    at mockit.internal.startup.JDK6AgentLoader.loadAgent(JDK6AgentLoader.java:54)
    at mockit.internal.startup.AgentInitialization.initializeAccordingToJDKVersion(AgentInitialization.java:21)
    at mockit.internal.startup.Startup.initializeIfNeeded(Startup.java:98)
    at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:112)
    at org.junit.runner.Runner.<clinit>(Runner.java:22)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.UnsatisfiedLinkError: no attach in java.library.path

クラスパスにそれぞれ jdk6/lib/tools.jar、jmockit.jar、junit.jar を含めました。なぜこれが起こっているのか手がかりはありますか?

4

7 に答える 7

10

tools.jar必要というわけではありませんが、"Attach API" のネイティブ ライブラリ ファイルattach.dll(または Linux/Mac に相当するものattach.soなど) が必要です。プレーンな JRE には、このライブラリは含まれていません。代わりに、Eclipse を JDK インストールにポイントします。このファイルには、jre/bin/attach.dllファイルが含まれている必要があります。

于 2012-08-15T13:05:33.683 に答える
7

attach.dll へのパスを PATH 環境変数に追加します。

于 2012-10-08T20:26:54.117 に答える
0

この問題は、64 ビット Windows 上の JDK 1.8.45 および 1.8.80 で見つかりました。私の解決策は、JDK の ./jre/bin ディレクトリから ./bin に attach.dll をコピーすることでした。これにより、非標準の JAVA_HOME を使用して Eclipse と Cygwin コマンド ラインを更新する必要がなくなりました。

Windows版はJREディレクトリの内容を無視しているのではないでしょうか?

于 2015-11-24T22:58:08.910 に答える