我在ubuntu中有一个java应用程序,java应用程序使用jar。 这个jar使用一些本地库(.dll)。
jar中使用 System.loadLibrary("my_native_library")
来加载所需的库。
在linux中它尝试加载.so文件意味着my_native_library.so,但我有my_native_library.dll。
所以我无法运行这个java应用程序。
我该怎么办?
答案 0 :(得分:0)
如果你的.jar
文件包含了一些.dll
,问题在于它有几个使用JNI(Java Native Interface)的模块并根据不是用java编写的代码解决问题,但是另一种系统特定语言。
Windows中的共享对象打包在扩展名为.dll
的文件中,而linux中的等效对象是一个共享对象,它包含在扩展名为.so.xxx.yyy
的文件中,其中xxx和yyy是标识版本的数字共享对象。
Linux和Windows可执行文件不可互换,这意味着你很可能在Linux中运行.jar
文件,除非.jar
文件还包含.so
文件以应对linux执行。