![](/img/trans.png)
[英]Is it possible to build a Linux/Motif Eclipse RCP application?
[英]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.