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

 2023-01-19    352  

问题描述

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

在Linux上,我得到了UnsatisfiedLinkError.发射器的位置未添加到java.library.path中.设置LD_LIBRARY_PATH变量后,我从终端启动应用程序时,它可以工作:

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

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.

当然,这仅在图书馆不依赖其他可能找不到的库时才能工作.

以上所述是小编给大家介绍的在Linux上的Eclipse RCP应用程序中加载本地库,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25865.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。