【发布时间】:2009-08-04 11:06:49
【问题描述】:
运行一个非常简单的 servlet 时,我得到一个“java.lang.NoClassDefFoundError: com/hp/hpl/jena/shared/BadURIException”。错误指向“Tagger”类的初始化。代码如下
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import my.package.Tagger;
public class NormaliserServlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse response) throws IOException{
Tagger pot = new Tagger("");
response.setContentType("text");
PrintWriter out = response.getWriter();
out.println("hello");
out.println(pot.someMethod());
out.close();
this.log("Request for normaliser");
}
}
war 文件包含在 WEB-INF/lib 中定义“Tagger”的 jar 文件,类似的调用在 servlet 之外工作。我似乎无法找到问题所在。 web.xml 也很标准:
<servlet>
<servlet-name>normalise</servlet-name>
<servlet-class>NormaliserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>normalise</servlet-name>
<url-pattern>/normalise</url-pattern>
</servlet-mapping>
我使用 winstone 作为 servlet 容器,但我在 tomcat 中得到完全相同的错误。堆栈跟踪是:
java.lang.NoClassDefFoundError: com/hp/hpl/jena/shared/BadURIException
at NormaliserServlet.doGet(NormaliserServlet.java:13)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:104)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
at java.lang.Thread.run(Thread.java:619)
【问题讨论】:
标签: java eclipse tomcat servlets