System.loadLibrary()从静态块返回异常

时间:2013-05-24 06:05:01

标签: java static shared-libraries

我创建了一个Java应用程序,它从静态初始化块加载一个Windows DLL。代码段如下:

// MyTestJava class starts
class MyTestJava
{

static
    {
        System.loadLibrary("MyLib");
    }
} // MyTestJava class def ends here

我听说对于从静态块执行的各种库初始化,JVM应该在java.library.path中搜索。所以我按如下方式为JVM设置库路径,并将MyLib.dll放在c:\Libs文件夹下。

options[1].optionString = "-Djava.library.path=C:\\Libs"; 

不幸的是,我的Java应用程序中出现了令人讨厌的不满意链接错误。

2 个答案:

答案 0 :(得分:1)

不清楚options[1].optionString = "-Djava.library.path=C:\\Libs";的含义。您应该将java.library.path作为java arg

传递
java -Djava.library.path=C:\Libs MainClass

答案 1 :(得分:0)

首先调用getEnv并检查“java.library.path”是否实际引用了您的库。 其他 您可以尝试使用

提供文件的绝对路径
static
{
System.load("C:\\Libs");
}