AttachNotSupportedException:没有提供者安装java代理

时间:2015-05-19 12:38:33

标签: java exception instrumentation javaagents

我将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库 等。

他们都没有为我工作

任何想法可能是什么问题? 感谢

2 个答案:

答案 0 :(得分:1)

包含以下代码行,它应该有效。它需要attach.dll文件才能工作。

static
{
   System.loadLibrary("attach");
}

答案 1 :(得分:1)

将IDE的jre依赖项从jre更改为jdk。 至于eclipse,Window - >偏好 - > Java - >已安装的JRE,用jdk替换jre。