9

在 Eclipse 中使用附加 API 时,控制台中会抛出错误。

为了使用附加 API,我在 eclipse 中安装了 JRE,然后使用编辑选项将 tools.jar 包含在当前 JRE 的外部 jars 选项中。

但是当我尝试执行一个简单的程序时,它会抛出以下错误,例如

java.lang.UnsatisfiedLinkError:在 java.library.path com.sun.tools.attach.AttachNotSupportedException 中没有附加:在 dynamicLoadingTest.VMAttach 的 com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:190) 处没有安装提供程序.main(VMAttach.java:17)

这是执行的简单程序。导入 java.io.IOException;

import com.sun.tools.attach.AttachNotSupportedException;
import com.sun.tools.attach.VirtualMachine;

public class VMAttach {


    public static void main(String[] args) {


        try {
            VirtualMachine vm = VirtualMachine.attach("6832");
        } catch (AttachNotSupportedException e) {
            System.out.println("This error");
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

提到的进程 id 6832是系统上运行的 Java 应用程序

在将安装的 jre 更改为 jdk 时,会产生以下错误

Exception in thread "main" com.sun.tools.attach.AttachNotSupportedException: jvm.dll not loaded by target process
    at sun.tools.attach.WindowsVirtualMachine.<init>(WindowsVirtualMachine.java:46)
    at sun.tools.attach.WindowsAttachProvider.attachVirtualMachine(WindowsAttachProvider.java:52)
    at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:195)
    at dynamicLoadingTest.VMAttach.main(VMAttach.java:17)
4

3 回答 3

8

实际上,当您的系统中有不同的 jdk 并且所有 jdk 都包含在类路径中时,就会出现此问题。

于 2013-01-30T17:45:24.490 回答
3

对我来说,解决方案是将attach.dllJDK(与您的 JRE 相同的版本)放入 JRE 的bin目录中。

于 2015-08-10T12:06:22.557 回答
1

我对 JDK1.7 进行了同样的尝试,它工作正常。对于 JDK1.6,问题仍然存在。

于 2013-01-17T09:26:43.400 回答