【发布时间】:2015-05-19 12:38:32
【问题描述】:
我无法将我的 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 库 等等。
它们都不适合我
知道可能是什么问题吗? 谢谢
【问题讨论】:
-
远程是指在同一台机器上的东西还是在不同的机器上?
-
在同一台机器但在不同的java进程中
-
你正在为正在运行的进程传递正确的 PID,我尝试了相同的代码并传递了 eclipse 运行的 pid,我可以看到它正在附加
-
是的,进程id和想要的进程一样。请记住,我不想将它附加到我自己的进程(从 eclipse 运行),而是附加到另一个 java 进程
-
你能提供完整的堆栈跟踪吗?
标签: java exception instrumentation javaagents