【问题标题】:How can you find where System.loadLibrary() is finding a library?你怎么能找到 System.loadLibrary() 在哪里找到一个库?
【发布时间】:2011-01-07 14:14:01
【问题描述】:
你能找出 System.loadLibrary() 是从哪里找到 DLL 的吗?使用 Java 方法调用或 Windows 工具?
我们有一些我们预计会失败的代码,因为它使用 System.loadLibrary() 加载本机库并且它意外地成功了!我们认为我们已经从 PATH 中删除了相关 DLL 的所有副本,并删除了 java.library.path 参数,但不知何故代码仍然成功。我们已经重新启动了机器(以确保它没有潜伏在内存中)。我们一定是在做一些愚蠢的事情,但却无法弄清楚是什么。
【问题讨论】:
标签:
java
windows
dll
java-native-interface
【解决方案1】:
ProcessExplorer 不会向您显示加载了哪些 DLL 以及从何处加载?
从 OP 编辑。
ProcessExplorer 可以。运行它,然后执行“搜索”以找到您的 dll。它将显示它附加到的所有进程 - 您的 java 进程应该是其中之一。 “handle or dll”行也会给出找到 DLL 的完整路径。
【解决方案2】:
试试System.getProperty("java.library.path");
如果你的库被放置在这些地方之一,那么它将被查找