Как добавить.Итак, файл на java.библиотека.путь в Linux

Я работаю с приложением java, которое нуждается в .dll файл на java.библиотека.путь в Windows. Для запуска того же приложения в Linux у меня есть соответствующий .so файл, который следует добавить в java.library.path в linux-машине я не нашел простого решения для этого до сих пор

я поставил .so в папке, которая уже находится в пути к классу, но мое приложение все еще жалуется, что не требуется на java.library.path

Я хотел бы найти:

  1. способы добавить .so to java.library.path
  2. как узнать, если его уже добавили (при добавлении)

4 ответов


добавить в каталог, содержащий в LD_LIBRARY_PATH перед запуском приложения

        export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:/some/pathOfContainingDirectory

использовать java -XshowSettings:properties чтобы показать java.библиотека.значение пути (и другие).


у меня было много проблем с выяснением этого, пожалуйста, убедитесь, что у вас есть lib префикс в имени библиотеки.

поэтому действия,

  1. export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/pathOfContainingDirectory"

  2. переименовать библиотеки, чтобы иметь 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;
        }
    }
}