我正在尝试通过JMS MessageListener的JNI包装器来调用Sleuth Kit C ++ Framework。但是我收到了这个错误
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);
}
答案 0 :(得分:1)
标准不允许尝试在Java EE容器中运行的代码中使用本机方法,并且可能导致未定义的行为。请参阅2000年8月的"Programming restrictions on EJB"中的JavaWorld文章,据我所知,今天仍然如此。
根据您的Java EE容器,您实际上可以使其工作。将libtsk_jni.so
放在系统库目录中或编辑服务器的启动脚本以设置LD_LIBRARY_PATH
环境变量可能会有所帮助。