使用JNI从JMS调用C ++

时间:2014-11-12 19:04:08

标签: java c++ java-ee java-native-interface jms

我正在尝试通过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);
}

1 个答案:

答案 0 :(得分:1)

标准不允许尝试在Java EE容器中运行的代码中使用本机方法,并且可能导致未定义的行为。请参阅2000年8月的"Programming restrictions on EJB"中的JavaWorld文章,据我所知,今天仍然如此。

根据您的Java EE容器,您实际上可以使其工作。将libtsk_jni.so放在系统库目录中或编辑服务器的启动脚本以设置LD_LIBRARY_PATH环境变量可能会有所帮助。