Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJ Idea和JNI:确保DLL';s是他们需要执行的地方_Java_Dll_Intellij Idea_Java Native Interface - Fatal编程技术网

Java IntelliJ Idea和JNI:确保DLL';s是他们需要执行的地方

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

我正在一个项目中使用第三方库,它包括两个.dll文件和一个.jar fie,以提供JNI包装。可以使用以下命令调用.jar文件中包含的第三方供应商的测试项目:

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驱动程序添加.dllsql\u auth.dll)以使用MS sql的集成安全性