jmockit 실행 /jmockit-1.n.jar 또는 -Djdk.attach.allowAttachSelfjMockit 오류 java.lang.IllegalStateException가 : JDK 9 실행하면 -javaagent이 필요합니다 이클립스 초기화 할 수 없습니다 JDK에 9
-Djdk.attach.allowAttachSelf
VM 인수를 추가하면 올바르게 작동합니다.
왜 그 인수를 추가해야합니까? jmockit
은 JDK 9에서 실행될 때 필요하다고 말하지 않습니다. 예, JRE 시스템 라이브러리는 JDK를 가리키고 jmockit jar는 외부 라이브러리 순서대로 junit보다 위에 있습니다.
버전 : JUnit을 4.12, 자바 JDK 9.0.1가, 1.37, hamcrest 코어 jmockit 1.3
java.base에서 testClass.testMethod (testClass.java:20)에서 java.lang.ExceptionInInitializerError/ java.base에서 jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (기본 방법)/jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) 에서 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl .invoke (DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect. Method.invoke org.junit.internal.runners.model.ReflectiveCallable.run에서 org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:50) 에서 (Method.java:564) (ReflectiveCallable. 자바 12) org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.java:47) 에서 org.junit.internal.runners.statements.InvokeMethod.evaluate (InvokeMethod.java:17 AT)에서 org.junit.runners.BlockJUnit4ClassRunner.runChild에서 org.junit.runners.ParentRunner.runLeaf org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:78)에서 (ParentRunner.java:325) (BlockJUnit4ClassRunner.java : 57) org.junit.runners.ParentRunner $ 3.run (ParentRunner.java:290) at org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren (ParentRunner.java:290) .java : 288) at org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) at org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:268) at org.junit.runners .ParentRunner.run org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run (JUnit4TestReference.java:86)에서 (ParentRunner.java:363) org.eclipse.jdt.internal.junit.runner에서 . TestExecution.run (TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:539) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:761) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run에서 에서(RemoteTestRunner.java:461) java.lang.IllegalStateException :에 의한 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java:207) 에서 /jmockit-1.n : JDK 9에서 실행이 -javaagent 필요 .JAR 또는 -Djdk.attach.allowAttachSelf mockit.internal.startup.AgentLoader.loadAgent (AgentLoader.java:60) 에서 mockit.internal.startup.AgentLoader.attachToRunningVM (AgentLoader.java:155) 에서 mockit.internal에서 .startup.Startup.verifyInitialization (Startup.java:137) mockit.Invocations에서 . (Invocations.java:26) ... 24 개
예외 메시지에서 JMockit *은 JDK 9에서 필요합니다 (잘 또는'-javaagent'를 사용해야 함). 대부분의 사람들이 읽지 않는 문서보다 더 좋습니다 ... –
@Rogerio, 하, 저는 항상 문서를 읽는 데 어려움을 겪습니다 ... – user2706641