我AttachNotSupportedException在linux(ubuntu64位)上运行jmockit测试时得到。Java版本是1.7.0_51。该JDK来自Oracle。使用ant运行测试(可能不相关)
AttachNotSupportedException
请参阅堆栈跟踪。
[junit] [junit] java.lang.RuntimeException: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded [junit] at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:89) [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:136) [junit] at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:169) [junit] at junit.framework.TestResult.<clinit>(TestResult.java:15) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:356) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1165) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1016) [junit] Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded [junit] at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106) [junit] at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:79) [junit] ... 8 more [junit] Exception in thread "main" java.lang.ExceptionInInitializerError [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:356) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1165) [junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1016) [junit] Caused by: java.lang.RuntimeException: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded [junit] at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:89) [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:136) [junit] at mockit.internal.startup.Startup.initializeIfPossible(Startup.java:169) [junit] at junit.framework.TestResult.<clinit>(TestResult.java:15) [junit] ... 3 more [junit] Caused by: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded [junit] at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106) [junit] at mockit.internal.startup.JDK6AgentLoader.getVirtualMachineImplementationFromEmbeddedOnes(JDK6AgentLoader.java:79) [junit] ... 8 more [junit] Running chs.caf.cap
在IBMJRE上运行jMockit测试时,它似乎与AttachNotSupportedException有关。但是,这是在IBM jre上。
暂时解决。
添加'-XX:+StartAttachListener'到jvm参数解决了该问题。
'-XX:+StartAttachListener'
此处在https://code.google.com/p/jmockit/issues/detail?id=136和http://mail.openjdk.java.net/pipermail/macosx- port-dev/2013中讨论了类似的问题-October / 006098.html (讨论jdk7构建中的可能回归)