Java IntelliJ Idea和JNI:确保DLL';s是他们需要执行的地方
我正在一个项目中使用第三方库,它包括两个.dll文件和一个.jar fie,以提供JNI包装。可以使用以下命令调用.jar文件中包含的第三方供应商的测试项目:Java IntelliJ Idea和JNI:确保DLL';s是他们需要执行的地方,java,dll,intellij-idea,java-native-interface,Java,Dll,Intellij Idea,Java Native Interface,我正在一个项目中使用第三方库,它包括两个.dll文件和一个.jar fie,以提供JNI包装。可以使用以下命令调用.jar文件中包含的第三方供应商的测试项目: java -cp product.jar com.company.samples.product.Test 只要.jar和两个dll都在同一个目录中,这就可以正常工作 在我的项目中,我将jar文件和dll放在同一个目录中,然后在IntelliJ Idea中将jar文件作为库引用,但这会导致库无法找到dll。是否有一种方法可以告诉Idea
java -cp product.jar com.company.samples.product.Test
只要.jar和两个dll都在同一个目录中,这就可以正常工作
在我的项目中,我将jar文件和dll放在同一个目录中,然后在IntelliJ Idea中将jar文件作为库引用,但这会导致库无法找到dll。是否有一种方法可以告诉Idea dll的位置,以便它可以在执行期间将它们输出到与jar文件相同的目录中?dll是从中加载的。您可以在启动应用程序时更改该值
或者,您可以构造dll的路径(同样通过使用环境变量/系统变量),并通过加载它。您可以设置
java.library.path
系统属性,以向java指出在何处查找本机库
-Djava.library.path=path/to/dll
请注意,根据,它是一个只读字段,在您有机会在代码中更改它之前会进行检查,但它们提供了一种解决方法。一般来说,与启动时相比,我从不需要在运行时设置值。在IntelliJ中,如果要添加一个目录,其中可以找到.dll,请执行以下操作: 1) 打开“项目结构”对话框(例如,Ctrl+Shift+Alt+S) 2) 在对话框的左侧窗格中,选择模块 3) 在右侧窗格中,选择感兴趣的模块 4) 在对话框右侧的“模块”页面上,选择“依赖项”选项卡 5) 在Dependencies选项卡上,单击“+”并选择JAR或目录 6) 在打开的对话框中,选择必要的文件和文件夹这些可能是单个.class和.java文件、目录和归档(.jar和.zip),其中包含这些文件以及带有java本机库的目录(.dll,.so或.jnilib)单击确定。 有关的原始解释,请参见 这就是我如何为JDBC驱动程序添加.dll(sql\u auth.dll)以使用MS sql的集成安全性