【发布时间】:2018-06-30 23:36:26
【问题描述】:
当尝试将代理 jar 文件附加到另一个在 java 中运行的进程时,我遇到了异常:
com.sun.tools.attach.AttachNotSupportedException: 无法打开套接字文件:目标进程没有响应或 HotSpot VM 未加载
我使用 java Oracle JDK 8_101 运行 linux,但是在回答了这个问题之后,我意识到操作系统对于这个问题的原因并不重要。
编辑: 答案:
如果您遇到此问题,对我来说发生此问题的原因是因为我从不同的 JVM 启动程序,而不是为系统指定的默认 JVM。
即)
程序 A (启动器),正在上运行>JVM-1 (例如JDK_8_1,或者JDK_8_1/jdk/jre).
程序 A (启动器),用java -jar programB.jar
程序 B (目标),正在系统的默认 JVM,JVM-2 (例如 JDK_8_2,或 JDK_8_2/jre)。
程序 A (启动器) 不能强>依附于 Program B (The target),因为JVM Program A (启动器) 正在运行,与 的 JVM 不匹配程序 B (目标)正在运行,因此抛出 com.sun.tools.attach.AttachNotSupportedException:
【问题讨论】:
-
您可能会增加附加超时(当它与超时有关而不是与权限有关时)
-Dsun.tools.attach.attachTimeout=10000(默认为 5000)。你能发布一些代码来重现这个问题吗?
标签: java linux sockets jvm agent