Как загрузить нативную библиотеку (.dll) из Java-приложения, работающего на Linux?

У меня есть Java-приложение в Ubuntu, Java-приложение использует JAR. Этот jar использует некоторые нативные библиотеки (.dll).

System.loadLibrary("my_native_library") используется в банке для загрузки необходимых библиотек.

В Linux он пытается загрузить файл.so означает здесь my_native_library.so, но у меня есть my_native_library.dll.

Поэтому я не могу запустить это Java-приложение.

Как мне поступить?

1 ответ

Решение

Если твой .jar файл включает в себя некоторые .dll проблема в том, что он имеет несколько модулей, которые используют JNI (Java Native Interface) и решает что-то на основе кода, который написан не на Java, а на другом системно-ориентированном языке.

Общие объекты в Windows упакованы в файлы с расширением .dll в то время как эквивалент в linux является общим объектом, который упакован в файл с расширением .so.xxx.yyy где xxx и yyy - числа, обозначающие версию общего объекта.

Исполняемые файлы Linux и Windows не являются взаимозаменяемыми, что означает, что вы не можете .jar файл в Linux, скорее всего, за исключением .jar файл включает в себя также .so файлы, чтобы справиться с выполнением Linux.

Другие вопросы по тегам