Я пытаюсь назвать оболочку Sleuth Kit C++ через свою 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
в libtsk_jni.so
системной библиотеки или отредактировать скрипт запуска сервера, чтобы установить LD_LIBRARY_PATH
среды LD_LIBRARY_PATH
.
libtsk.so.10
?