Java 在Linux上的Eclipse RCP应用程序中加载本机库
我有一个EclipseRCP应用程序,它通过JNI使用一些本机库。这些是相互动态链接的共享库。在Windows上,我将这些库(作为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变量后
*.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
当然,只有当库不依赖于可能找不到的其他库时,这才有效