0

我只是想从一个 servlet 调用基本的 Lucene 演示类,并得到这个异常:

严重:servlet SearcServlet 的 Servlet.service() 抛出异常 java.lang.ClassNotFoundException: org.apache.lucene.store.Directory at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) at org.apache .catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 在 servlet.SearcServlet.doPost(SearcServlet.java:50)

我的小服务程序方法:

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 演示搜索类,不包含其他功能。

4

1 回答 1

1

java.lang.ClassNotFoundException与Java Classpath 有关。ClassNotFoundException当 JVM 尝试在运行时动态加载一个类并且如果在类路径中找不到该类时,它会抛出java.lang.ClassNotFoundException

由于您使用的是名为 Apache Lucene 的第三方 API,因此您需要将所有必需的jar文件放置到应用程序类路径中。

对于 Web 应用程序,默认类路径是webappWebContent/WEB-INF/lib目录下的 目录。

在那里复制所有需要的jar文件,eclipse 会照顾好一切。

于 2013-02-01T10:08:28.223 回答