繁体   English   中英

Java JNI UnsatisfiedLinkError进行静态加载

[英]Java JNI UnsatisfiedLinkError for static load

我需要将JNI dll链接到我的Java应用程序,这是代码:

static
    {
        System.load("c:\\boca\\java\\BocaWorld.dll");
    }

这是错误

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\boca\java\BocaWorld.dll: Can't find dependent libraries

我可以解决将所有dll放入JRE / bin文件夹的问题,但是为什么第一种方法不起作用? 我不想将所有dll复制到JRE文件夹中。

您仅提供了单个本机库的路径,它的所有依赖项都在预定义的路径下搜索,而不是为具体库设置的路径。 您可以尝试为应用程序设置java.library.path系统属性,指向包含本机库的文件夹。 此属性用于查找本机库。

您可以通过命令行参数进行设置,例如:

java -Djava.library.path=<path_to_libs> <main_class>

或通过System.setProperty ,如:

System.setProperty(“java.library.path”, “/path/to/library”);

此外,由于设置了此属性,因此您可以跳过lib的路径,以防JVM将在您设置的路径下搜索它,因此它可能类似于:

static
{
    System.setProperty(“java.library.path”, “c:\\boca\\java\\”);
    System.loadLibrary("BocaWorld.dll");
}

但是请不要忘记, java.library.path已经可以包含一些路径,因此您可以使用;添加新路径; 作为分隔符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM