我将java应用程序附加到远程java vm时遇到了麻烦。 我在Windows 7上使用java 8u45,我的附加代码非常简单
import java.io.IOException;
import java.util.List;
import java.util.Scanner;
import com.sun.tools.attach.AttachNotSupportedException;
import com.sun.tools.attach.VirtualMachine;
import com.sun.tools.attach.VirtualMachineDescriptor;
import com.sun.tools.attach.spi.AttachProvider;
public class AgentLoader
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
String pid = s.next();
try
{
VirtualMachine vm = VirtualMachine.attach(pid);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
当调用attach时,我得到AttachNotSupportedException并且没有安装提供程序。 我在网上查看了一些答案,我看到了一些对我不起作用的解决方案。 比如确保我不会在同一台机器上混淆几个版本的java。 将PATH变量设置为指向位于%JAVA_HOME%\ jre \ bin中的attach.dll库 等。
他们都没有为我工作
任何想法可能是什么问题? 感谢
答案 0 :(得分:1)
包含以下代码行,它应该有效。它需要attach.dll文件才能工作。
static
{
System.loadLibrary("attach");
}
答案 1 :(得分:1)
将IDE的jre依赖项从jre更改为jdk。 至于eclipse,Window - >偏好 - > Java - >已安装的JRE,用jdk替换jre。