Исключение в потоке "main" java.lang.UnsatisfiedLinkError: нет jep в java.library.path

У меня есть файл 'libjep.so' после загрузки jep, и я также установил переменную среды LD_LIBRARY_PATH в ~./bashrc как показано ниже:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/python2.7/dist-packages/jep/libjep.so

а также во время выполнения

System.load("/usr/local/lib/python2.7/dist-packages/jep/libjep.so"); 

Но когда у меня есть следующая строка в моем коде,

Jep jep = new Jep();

Это показывает ошибку ниже:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jep in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at jep.Jep$TopInterpreter$1.run(Jep.java:118)
    at java.lang.Thread.run(Thread.java:745)

Спасибо

2 ответа

Вам нужно установить в LD_LIBRARY_PATH каталог, содержащий вашу библиотеку, а не саму вашу библиотеку, как это

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/python2.7/dist-packages/jep/

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

-Djava.library.path=/usr/local/lib/python2.7/dist-packages/jep/ 

java.lang.UnsatisfiedLinkError происходит только в том случае, если требуемая библиотека отсутствует в пути или уже загружена. Пара вещей, которые вы должны убедиться:

1) Ты выступаешь System.load(....) внутри статического блока, чтобы он выполнялся только один раз.
2) Также вы можете попробовать удалить расширение.

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