Как добавить.Итак, файл на java.библиотека.путь в Linux
Я работаю с приложением java, которое нуждается в .dll
файл на java.библиотека.путь в Windows. Для запуска того же приложения в Linux у меня есть соответствующий .so
файл, который следует добавить в java.library.path
в linux-машине я не нашел простого решения для этого до сих пор
я поставил .so
в папке, которая уже находится в пути к классу, но мое приложение все еще жалуется, что не требуется на java.library.path
Я хотел бы найти:
- способы добавить
.so
tojava.library.path
- как узнать, если его уже добавили (при добавлении)
4 ответов
добавить в каталог, содержащий в LD_LIBRARY_PATH
перед запуском приложения
export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/some/pathOfContainingDirectory
использовать java -XshowSettings:properties
чтобы показать java.библиотека.значение пути (и другие).
у меня было много проблем с выяснением этого, пожалуйста, убедитесь, что у вас есть lib
префикс в имени библиотеки.
поэтому действия,
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/pathOfContainingDirectory"
-
переименовать библиотеки, чтобы иметь lib в качестве префикса. [Добавить это как часть сценария сборки]
mv JNIDemo.so libJNIDemo.so
проверьте этот ответ для подробного объяснения https://stackoverflow.com/a/3987567/2076566
Я использовал метод java-XshowSettings: properties и нашел путь к ранее установленной папке и скопировал мой файл so в эту папку
File file = null;
private String[] libs_path = System.getProperty("java.library.path").split(":");
public boolean isInstalled() {
boolean isInstalled = false;
for(String lib : libs_path) {
file = new File(lib+"/"+"yourlib.so");
if(file.exists()) {
isInstalled = true;
break;
}
}
return isInstalled;
}
public void install() {
if(!isInstalled) {
for(String lib: lib_path) {
// copy your .so to lib
break;
}
}
}