2015-07-18 2 views
0

Я пытаюсь построить новый проект с помощью gradle, junit и jmock. Когда я запускаю мой билд, я получаю эту трассировку стека:родная библиотека для приложения API недоступна в этом JRE

com.heavyweightsoftware.daybook.ws.TypeCodeWsTest STANDARD_ERROR 
    java.lang.IllegalStateException: Native library for Attach API not available 
in this JRE 
     at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.ru 
nTestClass(JUnitTestClassExecuter.java:80) 
     at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.ex 
ecute(JUnitTestClassExecuter.java:49) 
     at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.p 
rocessTestClass(JUnitTestClassProcessor.java:64) 
     at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.process 
TestClass(SuiteTestClassProcessor.java:50) 
     at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionD 
ispatch.java:35) 
     at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionD 
ispatch.java:24) 
     at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(Con 
textClassLoaderDispatch.java:32) 
     at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocat 
ionHandler.invoke(ProxyDispatchAdapter.java:93) 
     at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestCl 
ass(TestWorker.java:106) 
     at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionD 
ispatch.java:35) 
     at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionD 
ispatch.java:24) 
     at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(Messa 
geHub.java:360) 
     at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures. 
onExecute(ExecutorPolicy.java:54) 
     at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableE 
xecutorImpl.java:40) 
    Caused by: java.lang.UnsatisfiedLinkError: no attach in java.library.path 
     ... 14 more 
Gradle Test Executor 1 finished executing tests. 

com.heavyweightsoftware.daybook.ws.TypeCodeWsTest > testGetTypeCodes FAILED 
    java.lang.ExceptionInInitializerError 
     at com.heavyweightsoftware.daybook.ws.TypeCodeWsTest.testGetTypeCodes(Ty 
peCodeWsTest.java:40) 

     Caused by: 
     java.lang.IllegalStateException: Native library for Attach API not avail 
able in this JRE 
      at mockit.internal.startup.AgentLoader.getVirtualMachineImplementati 
onFromEmbeddedOnes(AgentLoader.java:78) 
      at mockit.internal.startup.AgentLoader.loadAgent(AgentLoader.java:46 
) 
      at mockit.internal.startup.Startup.verifyInitialization(Startup.java 
:172) 
      at mockit.Invocations.<clinit>(Invocations.java:26) 
      ... 1 more 

      Caused by: 
      java.lang.NoClassDefFoundError: Could not initialize class sun.tools 
.attach.WindowsVirtualMachine 
       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
Method) 
       at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown 
Source) 
       at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unk 
nown Source) 
       at java.lang.reflect.Constructor.newInstance(Unknown Source) 
       at mockit.internal.startup.AgentLoader.getVirtualMachineImplemen 
tationFromEmbeddedOnes(AgentLoader.java:70) 
       ... 4 more 

Так что я посмотрел и нашел эти вопросы: JMockit ERROR - Native library for Attach API not available in this JRE и jmockit: Native library for Attach API not available in this JRE error

И я сделал изменения в затмении, но эта ошибка происходит даже тогда, когда работающий за пределами затмения, и поэтому это не настройки затмения.

Вот выход Java -версии из командной строки:

C:\Users\thom\git\daybook\WebServices>java -version 
java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b15) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) 

Это часть Gradle сборки --info:

Executing task ':test' (up-to-date check took 0.193 secs) due to: 
    Value of input property 'candidateClassFiles' has changed for task ':test' 
Starting process 'Gradle Test Executor 1'. Working directory: C:\Users\thom\git\ 
daybook\WebServices Command: C:\java\bin\java.exe -Djava.security.manager=jarjar 
.org.gradle.process.internal.child.BootstrapSecurityManager -Dfile.encoding=wind 
ows-1252 -Duser.country=US -Duser.language=en -Duser.variant -ea -cp C:\Users\th 
om\.gradle\caches\2.4\workerMain\gradle-worker.jar jarjar.org.gradle.process.int 
ernal.launcher.GradleWorkerMain 'Gradle Test Executor 1' 
Successfully started process 'Gradle Test Executor 1' 
Gradle Test Executor 1 started executing tests. 

Который говорит мне, что он работает Java от C: \ java \ bin, который является правильной установкой. Я посмотрел, и у этого режиссера есть javac, который, я думаю, подтверждает, что это JDK, а не JRE.

Любой вход, о мудрый выше мудрого?

ответ

1

Я добавил c: \ java \ jre \ bin на свой путь, и сборка снова начала работать.