首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java : UnsatisfiedLinkError

Java : UnsatisfiedLinkError
EN

Stack Overflow用户
提问于 2013-03-08 09:20:05
回答 1查看 3K关注 0票数 6

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

代码语言:javascript
复制
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的目录,但没有成功。

这里怎么了?

还有一个额外的问题:

有办法查看哪个本机库实际上绑定到一个java类吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-08 10:48:39

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

代码语言:javascript
复制
[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。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15290526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档