Исключение в потоке "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) Также вы можете попробовать удалить расширение.