Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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/2/linux/27.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 在Linux上的Eclipse RCP应用程序中加载本机库_Java_Linux_Java Native Interface_Eclipse Rcp - Fatal编程技术网

Java 在Linux上的Eclipse RCP应用程序中加载本机库

Java 在Linux上的Eclipse RCP应用程序中加载本机库,java,linux,java-native-interface,eclipse-rcp,Java,Linux,Java Native Interface,Eclipse Rcp,我有一个EclipseRCP应用程序,它通过JNI使用一些本机库。这些是相互动态链接的共享库。在Windows上,我将这些库(作为*.dll文件)放在RCP启动程序可执行文件(*.exe)旁边,并通过System.load(“”)加载它们。这非常有效,因为启动器的位置似乎添加到了java.library.path中,这样库之间的动态链接就可以工作了 在Linux上,我得到一个不满意的链接错误。启动器的位置未添加到java.library.path。设置LD\u LIBRARY\u PATH变量后

我有一个EclipseRCP应用程序,它通过JNI使用一些本机库。这些是相互动态链接的共享库。在Windows上,我将这些库(作为
*.dll
文件)放在RCP启动程序可执行文件(
*.exe
)旁边,并通过
System.load(“”
)加载它们。这非常有效,因为启动器的位置似乎添加到了
java.library.path
中,这样库之间的动态链接就可以工作了

在Linux上,我得到一个
不满意的链接错误
。启动器的位置未添加到
java.library.path
。设置
LD\u LIBRARY\u PATH
变量后从终端启动应用程序时,它会工作:

export LD_LIBRARY_PATH=.
./myApp
位置
是添加到
java.library.path
的位置。有更好的方法吗?我希望用户只需双击启动器


myApp.ini
文件中设置
-Djava.library.path=.
也不起作用。我在安装详细信息中看到了它,但是我仍然得到了一个
未满足的链接错误

查找库最可靠的方法不是使用
java.library.path
,而是通过java代码查找它们并通过
System.load()
加载,而不是使用
System.loadLibrary()
。您可以应用您想要的任何逻辑来查找本机库(尽管最好不要太聪明),如果您的机制失败,您可以退回到尝试
java.library.path

当然,只有当库不依赖于可能找不到的其他库时,这才有效