2023-01-21 323
我在Ubuntu中有一个Java应用程序,Java应用程序使用JAR.
此罐子使用一些本地库(.dll).
System.loadLibrary(“my_native_library”)在罐子中使用用于加载所需库.
在linux中它尝试加载.so文件在这里表示my_native_library.so,但我有my_native_library.dll.
因此我无法运行此Java应用程序.
我应该如何继续?
如果您的.jar文件包含一些.dll问题是它具有使用JNI(JAVA本机界面)的几个模块,并基于未在Java中编写的代码求解了某些东西,但系统特定语言.
Windows中的共享对象包装在带有扩展.dll的文件中,而Linux中的等效物是一个共享对象,该对象包装在带有扩展名.so.xxx.yyy的文件中,其中XXX和YYY是标识共享对象的版本的数字.
linux和Windows可执行文件不可互换,您的罐头运行.jar在linux中的运行最大,除非.jar文件还包括.jar文件,还包括.so文件以应对Linux的执行.
.
通常,如果您希望启用JNI启用JAR文件的文件可执行文件,则在JAR可用之前需要安装一些安装. Windows通常在某些Windows目录中安装DLL,或者如果您没有完成,则使用PATH环境变量来定位DLL(因此通常,程序将DLL与应用程序可执行文件保持在同一位置)Linux具有完全记录的方式搜索共享对象(请参见ldconfig manpage以获取说明,ld.so manpage),涉及系统库和用户共享对象.
无论如何,JAR文件仅使用CLASSPATH环境来定位.class文件,您需要对使用的系统加载程序可见的共享对象进行制作(从JAR提取).因此,SO install 的最佳方法是JNI共享对象,是从.jar文件中提取它,并将其放在O.S.将其定位的目录中.搜索引擎(两个系统都不同)
注意Windows和Linux JNI加载程序需要库对象的通用名称,并且它们会执行依赖的部分以完成共享对象名称.这意味着,对于称为myshared的共享对象,您需要在Windows系统中调用共享对象myshared.dll,而Linux中的myshared.so(我不确定,但是您会得到它可以轻松地通过试用和失败并查找System类和System#loadLibrary(String)文档)
以上所述是小编给大家介绍的如何从Linux上运行的Java应用程序加载本机库(.dlls)?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26226.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日
扫码二维码
获取最新动态