首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java :动态更改java.library.path

Java :动态更改java.library.path
EN

Stack Overflow用户
提问于 2011-04-06 11:09:53
回答 3查看 12.1K关注 0票数 17

在我的Windows机器上使用Windows时,在调用com.sun.tools.attach时会出现以下错误

代码语言:javascript
复制
VirtualMachine.list()

java.lang.UnsatisfiedLinkError: no附加在java.library.path

原因是缺少了attach.dll。attach.dll位于$JRE/bin/。当用-Djava.library.path=[Directory to the attach.dll]启动我的Java程序时,所有工作都没有错误输出。

现在,我不想添加每个Java程序启动这个丑陋的JVM参数。因此,我的问题是:

  1. 是我的机器配置不正确,而且$JRE/bin/无论如何都应该在库路径中?如果不是,如何动态添加路径?System.setProperties("java.library.path",StringOfThePathToTheAttach.dll);不工作。库路径已更改,但错误apperas仍然存在。这与SecurityManager或JVM启动有关吗?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-07 03:29:57

你的System.setProperty("java.library.path", StringOfThePathToTheAttach.dll);应该能工作。我猜你说得太晚了。换句话说,有人试图在设置属性之前访问DLL。

在以代码设置属性之后,以及在违规方法调用之前,您能输出java.library.path的当前值吗?

也就是说,如果在看到“设置属性之后”之前看到“attach.dll调用之前”输出,那么您就知道问题出在哪里了。

编辑:

指向本机库的一种更好的方法是在违规代码行之前再次使用System.load(StringOfThePathToTheAttach.dll)

票数 5
EN

Stack Overflow用户

发布于 2012-04-13 15:49:30

刚找到一个可以回答你问题的链接

“JVM启动时只读取一次java.library.path。如果使用System.setProperty更改此属性,则不会产生任何影响。”

http://fahdshariff.blogspot.jp/2011/08/changing-java-library-path-at-runtime.html

票数 9
EN

Stack Overflow用户

发布于 2011-05-08 21:43:29

代码语言:javascript
复制
System.setProperty("java.library.path", System.getProperty("java.library.path") + File.pathSeparator + FOLDER_THAT_CONTAINS_ATTACH_DLL);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5565356

复制
相关文章

相似问题

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