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变量后,我从终端启动应用程序时,它可以工作:
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/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态