繁体   English   中英

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

[英]Load native libraries in an Eclipse RCP application on Linux

我有一个Eclipse RCP应用程序,它通过JNI使用某些本机库。 这些是相互动态链接的共享库。 在Windows上,我将这些库(作为*.dll文件)放在RCP启动器可执行文件( *.exe )文件旁边,然后通过System.load("<absolute file path>")加载它们。 这很好用,因为启动器的位置似乎已添加到java.library.path以便库之间的动态链接有效。

在Linux上,我收到UnsatisfiedLinkError 启动器的位置未添加到java.library.path 当我在设置LD_LIBRARY_PATH变量后从终端启动应用程序时,它将起作用:

export LD_LIBRARY_PATH=.
./myApp

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

设置-Djava.library.path=. myApp.ini文件中也不起作用。 我在安装详细信息中看到了它,但仍然收到UnsatisfiedLinkError

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

当然,这仅在库不依赖于其他可能找不到的库的情况下才有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM