在我的Windows机器上使用Windows时,在调用com.sun.tools.attach时会出现以下错误
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参数。因此,我的问题是:
$JRE/bin/无论如何都应该在库路径中?如果不是,如何动态添加路径?System.setProperties("java.library.path",StringOfThePathToTheAttach.dll);不工作。库路径已更改,但错误apperas仍然存在。这与SecurityManager或JVM启动有关吗?发布于 2011-04-07 03:29:57
你的System.setProperty("java.library.path", StringOfThePathToTheAttach.dll);应该能工作。我猜你说得太晚了。换句话说,有人试图在设置属性之前访问DLL。
在以代码设置属性之后,以及在违规方法调用之前,您能输出java.library.path的当前值吗?
也就是说,如果在看到“设置属性之后”之前看到“attach.dll调用之前”输出,那么您就知道问题出在哪里了。
编辑:
指向本机库的一种更好的方法是在违规代码行之前再次使用System.load(StringOfThePathToTheAttach.dll)。
发布于 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
发布于 2011-05-08 21:43:29
System.setProperty("java.library.path", System.getProperty("java.library.path") + File.pathSeparator + FOLDER_THAT_CONTAINS_ATTACH_DLL);https://stackoverflow.com/questions/5565356
复制相似问题