如何从Linux上运行的java应用程序加载本机库(.dlls)?

时间:2018-02-28 12:56:52

标签: java linux wine nativelibrary

我在ubuntu中有一个java应用程序,java应用程序使用jar。 这个jar使用一些本地库(.dll)。

jar中使用

System.loadLibrary("my_native_library")来加载所需的库。

在linux中它尝试加载.so文件意味着my_native_library.so,但我有my_native_library.dll。

所以我无法运行这个java应用程序。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果你的.jar文件包含了一些.dll,问题在于它有几个使用JNI(Java Native Interface)的模块并根据不是用java编写的代码解决问题,但是另一种系统特定语言。

Windows中的共享对象打包在扩展名为.dll的文件中,而linux中的等效对象是一个共享对象,它包含在扩展名为.so.xxx.yyy的文件中,其中xxx和yyy是标识版本的数字共享对象。

Linux和Windows可执行文件不可互换,这意味着你很可能在Linux中运行.jar文件,除非.jar文件还包含.so文件以应对linux执行。