我有一个web应用程序,我在其中使用indri.jar。我用的是月食。
我已经将它放在lib文件夹中,并执行了“”选项。
此外,在“构建路径->配置->顺序和导出”中,将检查所有内容。
在“属性->部署程序集”中,还添加了所有jar文件。然后,我将项目导出到.war,并将其放到服务器上。
我检查了已部署项目的lib文件夹,jar文件就在那里。
另外,我的机器和服务器都是64位的,因为对于这个库,32位和64位有两个版本,如果您使用它们而不是彼此使用,它就不能工作。
同样重要的是,我们是一个使用git存储库来处理这个项目的团队,当另一方拉出代码时,所有库和所有东西都附加在一起,它们在运行代码时没有问题。(他们安装了indri,我在服务器上安装了indri)
不过,当我在浏览器中打开页面时,它会给我“ajax调用中的错误”,当我跟踪它给我的错误时:
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.UnsatisfiedLinkError: no indri_jni in java.library.pathorg.etc.
root cause
org.glassfish.jersey.server.ContainerException: java.lang.UnsatisfiedLinkError: no indri_jni in java.library.pathorg.glassfish.etc
root cause
java.lang.UnsatisfiedLinkError: no indri_jni in java.library.pathjava.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)java.lang.Runtime.loadLibrary0.etc.我搜索了很多,然后在服务器上运行了这一行:
java -Djava.library.path=/path/to/jnilib/directory MainClass然后,错误更改为:
exception
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class lemurproject.indri.indriJNIorg.glassfish
root cause
org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class lemurproject.indri.indriJNIorg.glassfish.jersey.servlet
java.lang.NoClassDefFoundError: Could not initialize class lemurproject.indri.indriJNIlemurproject.indri.QueryEnvironment.<init>(QueryEnvironment.java:39)LogicLayer.IndriIndex.processQuery(I...注意:
发布于 2014-07-24 14:25:50
indri安装中有一个重要的文件,即libinrdi_jni.so,它的作用是将java链接到c语言,c语言是编写库所用的语言。它位于indri安装文件夹中:./install/lib/libindri_jni.so。
我的代码找不到这个文件。所以我必须把它放在服务器上,然后它就会找到它,一切都正常了。
为了确保您有这个文件,您需要以这种方式安装indri:
./配置--启用-java--带有-javahome=address//jdk1.7.0-前缀=/address/to/indri-5.7/install
全部安装
确保下载jdk1.7并自己解压它,而不是使用任何安装包。这样就可以安装libindri_jni.so了。
然后,为了确保您的java程序能够工作,您需要运行indri文件夹中提供的IndexUI.jar和RetUI.jar。如果它有效,那么您的程序也会工作,但是如果它不能工作,那么尝试运行以下命令:
导出LD_LIBRARY_PATH=/address/to/indri-5.7/install/lib
然后再次运行jar文件,如果问题已经解决,那么libindri_jni.so文件就是问题所在,您可以通过将其定位到程序确实可以找到的位置来解决它。
https://stackoverflow.com/questions/24762274
复制相似问题