我只是试图从servlet调用基本的Lucene演示类,并且得到了这个异常:
SEVERE:Servlet SearcServlet的Servlet.service()引发了异常 java.lang.ClassNotFoundException:org.apache.lucene.store.Directory 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 在servlet.SearcServlet.doPost(SearcServlet.java:50)
我的servlet方法:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
try {
String[] arguments = new String[] {"123"};
SearchFiles.main(arguments);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
当我从另一个Java类调用它时,搜索正在执行,但是当我从servlet执行此操作时,我得到了这个异常。我正在使用lucene演示搜索类,没有包含其他功能。
答案 0 :(得分:1)
java.lang.ClassNotFoundException
与Java Classpath有关。 {J}尝试在运行时动态加载类时会出现ClassNotFoundException
,如果在类路径中找不到该类,则会抛出java.lang.ClassNotFoundException
。
由于您使用的是名为Apache Lucene的第三方API,因此您需要将所有必需的 jar 文件放到应用程序类路径中。
对于Web应用程序,默认类路径为 webapp 或 WebContent 目录下的/WEB-INF/lib
目录。
在那里复制所有必需的 jar 文件,eclipse会照顾好一切。