Как загрузить нативную библиотеку (.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.