要将DLL导入Eclipse Java项目,我检查了“java.library.path”
String path = System.getProperty("java.library.path");
System.out.println(path);
其中一个path
值等于C:/Windows/System32
。因此,我在myAPI.dll
中保存了C:/Windows/System32
。然后我打电话给System.loadLibrary
:
System.loadLibrary("myAPI.dll");
收到错误消息:
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: myAPI.dll
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
BTW,我试图将我的DLL文件放在path
中提到的其他不同目录中。但每次我得到相同的错误信息。如何解决这个问题?
答案 0 :(得分:5)
不要在库的末尾放置“.dll”。这是一个特定于Windows的扩展,您的调用将在其他具有其他扩展的系统上运行,因此启用扩展名是不正确的。只需加载“myAPI”,如果这是正确的名称和其他内容如宣传的那样,它将起作用。
答案 1 :(得分:1)
一种选择是尝试将该dll保存在eclipse系统库中使用的/ jre / bin中,并且能够在运行时配置dll文件,方法是将dll放在/ jre / bin中
这是我能找到的最简单的方法。这对我有用。希望能帮到你。:)
答案 2 :(得分:0)
如果dll在项目文件夹中(例如项目的一部分),即:
./prod/bin/myAPI.dll
并且您希望在eclipse中执行程序/单元测试,您可以配置运行程序的运行时环境。转到“Preferences / Java / Installed JRE”,选择所需的JRE或JDK(注意:要加载32位dll,必须使用32位JRE,尽管主机系统是64位系统),单击“编辑”。在“默认VM参数”框中输入
-Djava.library.path="./prod/bin;${env_var:PATH}"
这会在系统路径前面添加你的dll文件夹“prod / bin”(不要打扰,它不是永久性的,仅适用于所选JRE的环境)。
通过运行以下代码,您可以验证系统路径是否已更新并且可以加载dll:
String path = System.getProperty("java.library.path");
System.out.println(path);
System.loadLibrary("myAPI");