DJava.library.path不';不起作用,但将目录添加到路径起作用

DJava.library.path不';不起作用,但将目录添加到路径起作用,java,path,Java,Path,我有一个JAR文件,需要一些外部DLL才能工作。我用 System.loadLibrary("openalprjni"); 如果我尝试在没有任何参数的情况下执行JAR,则无法找到DLL(显然): 如果我尝试使用Djava.library.path将路径添加到DLL,它也不起作用(请注意,我将新路径附加到现有路径,而不是覆盖它) 请注意,现在的错误是找不到依赖库,而不是java.library.path中的普通no xxx。然而,我不知道这意味着什么 程序运行的唯一方法是在Windows控制面板

我有一个JAR文件,需要一些外部DLL才能工作。我用

System.loadLibrary("openalprjni");
如果我尝试在没有任何参数的情况下执行JAR,则无法找到DLL(显然):

如果我尝试使用Djava.library.path将路径添加到DLL,它也不起作用(请注意,我将新路径附加到现有路径,而不是覆盖它)

请注意,现在的错误是
找不到依赖库
,而不是java.library.path中的普通
no xxx。然而,我不知道这意味着什么

程序运行的唯一方法是在Windows控制面板中手动将
D:\ALPRTest\path添加到dll
的路径变量中

如果我使用
-XshowSettings:properties
,我可以确认两个
java.library.path
是完全相同的,但是除非我手动将此路径添加到路径中,否则JAR不会运行


为什么
-Djava.library.path
不起作用,而是添加到path工作?

您没有附加到现有库路径,而是附加到
path
环境变量的内容。你能公布你正在使用的实际路径吗?您是使用包含DLL名称的完整路径,还是仅使用其目录?你能从程序内部打印
java.library.path
的值吗?用java加载库时,我只使用它的名称,没有路径(如我在第一块中所示)。如果我在main方法中打印
java.library.path
的内容,我可以看到我的DLL的绝对路径在那里,但是我仍然有一个不满意的链接错误,即使DLL在正确的路径中。即使我删除
DJava.library.path
选项,它仍然有效,当DLL的绝对路径在path变量中时,问题可能是即使正确设置了java.library.path,Windows也不会在其路径以外的任何位置查找依赖库。参考和
> java -jar dist\ALPRTest.jar "param1" "param2"
> Exception in thread "main" java.lang.UnsatisfiedLinkError: no openalprjni in java.library.path
> java -Djava.library.path="%PATH%;D:\ALPRTest\path-to-dll" -jar dist\ALPRTest.jar "param1" "param2"
> Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\ALPRTest\dist\openalprjni.dll: Can't find dependent libraries