gpt4 book ai didi

Java 附加 API : UnsatisfiedLinkError

转载 作者:IT王子 更新时间:2023-10-29 00:51:42 24 4
gpt4 key购买 nike

当使用 Java Attach API 时,我只在 Linux 上收到以下链接错误(在不同的机器上试过):

Exception in thread "main" java.lang.UnsatisfiedLinkError: sun.tools.attach.WindowsAttachProvider.tempPath()Ljava/lang/String;
at sun.tools.attach.WindowsAttachProvider.tempPath(Native Method)
at sun.tools.attach.WindowsAttachProvider.isTempPathSecure(WindowsAttachProvider.java:74)
at sun.tools.attach.WindowsAttachProvider.listVirtualMachines(WindowsAttachProvider.java:58)
at com.sun.tools.attach.VirtualMachine.list(VirtualMachine.java:134)
at sun.tools.jconsole.LocalVirtualMachine.getAttachableVMs(LocalVirtualMachine.java:151)
at sun.tools.jconsole.LocalVirtualMachine.getAllVirtualMachines(LocalVirtualMachine.java:110)
...

有趣的是,在 Solaris 和 Windows 上它可以开箱即用

我尝试了几种指定 java.library.path 的组合以指向包含 libattach.so 的目录,但没有成功。

这是怎么回事?

还有一个额外的问题:
有没有办法查看哪个 native 库实际绑定(bind)到 java 类?

最佳答案

不同的平台使用不同的AttachProvider。在 Linux 上,它不应使用 sun.tools.attach.WindowsAttachProvider。它适用于 Windows。

[solaris] sun.tools.attach.SolarisAttachProvider
[windows] sun.tools.attach.WindowsAttachProvider
[linux] sun.tools.attach.LinuxAttachProvider

这是在资源文件 META-INF\services\com.sun.tools.attach.spi.AttachProvider 中配置的(通常此文件存在于 tools.jar 中)。它将搜索 CLASSPATH 以获取此资源文件的第一次出现,并从中读取 AttachProvider 实现类。

因此,您可能可以通过在 CLASSPATH 中搜索 sun.tools.attach.WindowsAttachProvider 来解决此问题。可能您包含了来自 Windows 的 tools.jar。

关于Java 附加 API : UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com