我需要将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文件夹中。
答案 0 :(得分:0)
您只提供了单个本机库的路径,所有它的依赖项都是在预定义路径下搜索的,而不是您为具体库设置的路径。您可以尝试为应用程序设置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
已经包含了一些路径,因此您可以使用;
作为分隔符添加新路径。