Я пытаюсь вызвать Sleuth Kit C ++ Framework через JNI-оболочку из JMS MessageListener. Но я получаю эту ошибку
java.lang.UnsatisfiedLinkError: /tmp/libtsk_jni.so: libtsk.so.10: невозможно открыть общий объектный файл: нет такого файла или каталога
Я попытался скопировать libtsk_jni.so в / tmp, но без разницы.
Но я могу сделать это в консольном приложении Java. В чем может быть ошибка?
public void onMessage(Message message) {
try {
String imagePath = "uploads/Cfreds001A001.dd";
try{
SleuthkitCase sk = SleuthkitCase.newCase(imagePath + ".db");
} catch (TskCoreException ex) {
}
} catch (JMSException ex) {
Logger.getLogger(WorkerBean.class.getName()).log(Level.SEVERE, null, ex);
} catch (InterruptedException ex) {
Logger.getLogger(WorkerBean.class.getName()).log(Level.SEVERE, null, ex);
}
Попытка использовать собственные методы из кода, работающего в контейнере Java EE, не разрешена стандартом и может привести к неопределенному поведению. См. Статью JavaWorld от августа 2000 г. «Программирование ограничений на EJB», до сих пор верно сегодня, насколько я знаю.
В зависимости от вашего контейнера Java EE, вы на самом деле можете заставить это работать. Это может помочь поставить libtsk_jni.so
в каталоге системной библиотеки или отредактировать скрипт запуска сервера, чтобы установить LD_LIBRARY_PATH
переменная окружения.