使用jar文件中的类时,NoClassDefFoundError

时间:2012-06-28 15:18:59

标签: jsp java-ee servlets maven

我正在尝试运行搜索Web应用程序,并且需要使用另一个Java项目来执行所有后端操作。我将项目导出到一个jar文件中,并将其添加到我的动态webapp项目中。我尝试的第一件事是“添加外部罐子”来自Properties> Java构建路径。这没用,所以我也尝试在WEB-INF / lib中添加jar也没用。如何正确添加jar文件,以便在webapp中使用该项目?

更具体地说,这是我得到的错误:

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception

根本原因

java.lang.NoClassDefFoundError: org/apache/accumulo/core/client/Instance
com.afspq.model.Results.getResults(Results.java:46)
com.afspq.web.ProcessQuery.doGet(ProcessQuery.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause

java.lang.ClassNotFoundException: org.apache.accumulo.core.client.Instance
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
com.afspq.model.Results.getResults(Results.java:46)
com.afspq.web.ProcessQuery.doGet(ProcessQuery.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

注意Apache Tomcat / 6。0。3。3日志中提供了根本原因的完整堆栈跟踪。

2 个答案:

答案 0 :(得分:0)

我会将以下内容添加到您的Maven pom.xml文件中:

<dependency>
    <groupId>org.apache.accumulo</groupId>
    <artifactId>accumulo-core</artifactId>
    <version>1.4.0</version>
</dependency>

并且不在Eclipse中添加它。 pom.xml是Eclipse的真相。

要检查所有内容是否正确,请执行命令行:

mvn clean package

将创建的战争部署到tomcat中以确保一切正常。

答案 1 :(得分:0)

这是一个痛苦的过程,但我不得不手动添加来自Accumulo,Hadoop和Zookeeper的所有jar文件。我不得不将jar文件添加到两个位置。一个是构建路径(右键单击Web项目&gt;属性&gt; Java构建路径&gt;添加外部jar),另一个是我的Web项目中的WebContent / WEB-INF / lib文件夹。这为我修好了。出于某种原因,Maven没有添加依赖项,尽管它们都是在我的pom.xml中指定的。