我有一个 Java 项目,它使用多个 native DLL,但仅使用 System.load() 加载其中一个,并且它依赖于其他DLL。我无权修改该代码。 System.load() 查找 java.library.path,我可以通过命令行参数设置它,但根据 Java JNI and dependent libraries on Windows 中的最佳答案依赖DLL的加载是由Windows完成的,它只关心PATH,而不关心java.library.path。因此,我需要将包含 DLL 的目录添加到 PATH,并且通过命令行参数来完成此操作也很方便。这样可以吗?
编辑澄清:我正在从 Eclipse 运行我的代码作为 jUnit 插件测试,并且我正在尝试找出如何更改运行配置以获得此效果。我通过将以下内容添加到“参数”选项卡中的 VM 参数框中来更改 java.library.path:
-Djava.library.path="D:/prototype/resources/nativelib/x64;${system_property:java.library.path}"
D:/prototype/resources/nativelib/x64 当然是存储 DLL 的目录。
我尝试添加
-Dpath "D:/prototype/resources/nativelib/x64;${system_property:path}"
或
-DPATH "D:/prototype/resources/nativelib/x64;${system_property:PATH}"
在同一个地方,但他们都没有得到想要的结果。
最佳答案
在命令行中输入以下命令。
set PATH=%PATH%;C:\path_to_ur_dlls
是的,您可以在 java 代码中执行此操作,如下所示。
Process proc = Runtime.getRuntime().exec("cmd set PATH=%PATH%;C:\\path_to_ur_dlls");
proc.waitFor();
关于Java命令行参数修改PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28234070/