将DLL导入Eclipse Java项目

时间:2012-01-28 12:18:09

标签: java eclipse dll

要将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中提到的其他不同目录中。但每次我得到相同的错误信息。如何解决这个问题?

3 个答案:

答案 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");