当试图将代理jar文件附加到运行在java中的另一个进程时,我遇到了一个异常:
com.sun.tools.attach.AttachNotSupportedException:无法打开套接字文件:目标进程未响应或HotSpot VM未加载
我使用java Oracle 8_101运行linux,但是在回答了这个问题之后,我意识到O.S对于造成这个问题的原因并不重要。
编辑:答案:
如果您遇到此问题,发生此问题的原因是因为我从不同的JVM启动了一个程序,而不是为系统指定的默认JVM。
I.(E)
Program A (启动器),运行在JVM-1 (例如JDK_8_1,或JDK_8_1/jdk/jre)上。
Program A (启动器),使用java -jar programB.jar创建一个进程
Program B (目标),运行在系统的默认JVM,JVM-2 (例如JDK_8_2,或JDK_8_2/jre)上。
由于JVM E 144程序<代码>E 146A<代码>E 247E 148(启动器)E 249运行在<<上,JVM <代码>E 144程序<代码>E 146/代码>A<代码>E 247E 148(启动器)E 249>与运行E 150的代码><代码><代码>>代码>>代码>>代码>
发布于 2018-01-22 12:02:04
造成这一问题的共同原因:
/tmp/.java_pid1234已被删除(例如,通过定期清理/tmp的计划作业)。-XX:+DisableAttachMechanism选项启动目标JVM。发布于 2020-03-20 11:29:58
问题:不同用户执行jcmd
可能发生的情况是,调用jcmd的用户与运行进程的用户不同。
示例:
解决方案:
在Linux上,当进程正在运行时,尝试使用同一个用户运行jcmd。
如果有这样的情况,就会出现错误。
问题: AppArmor
当启用AppArmor来运行JVM实例(这限制了sys调用)时,打开套接字连接可能会受到限制。
解决方案:
更改AppArmor-过程的轮廓
https://stackoverflow.com/questions/48379878
复制相似问题