java.lang.ClassNotFoundException 同时从 Servlet 的 doGet() 创建类实例



我对Java Servlet还比较陌生。我正在尝试从我的MedicareLocatorServlet中的doGet()方法创建一个名为HospitalFinder的类的实例。HospitalFinder类使用外部Lib。当我从网页发起get请求时,servlet抛出一个ClassNotFoundException。以下是异常详细信息:

SEVERE: Servlet.service() for servlet [MedicareLocatorServlet] in context with path [/Medicare] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.openrdf.sail.Sail
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at testclass.getHFInstance(testclass.java:6)
    at MedicareLocatorServlet.doGet(MedicareLocatorServlet.java:53)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

当我尝试在同一个包中从另一个类创建HospitalFinder实例时,不会引发异常。我试图寻找处理classNotFoundException的方法,但似乎什么都不起作用。P.S-我正在使用Eclipse动态web项目。有人能帮我吗?

首先,您应该清楚地了解eclipse 是如何部署和运行servlet项目的

1.eclipse将把所有的源代码"编译"成几个.class文件。(也许使用compile不是很确定,因为java是一种解释语言)

2.eclipse会将.class文件放入tomcat可以使用的相应目录中。

3.你从浏览器发送了一个http get请求,tomcat会解析你的请求,并将你的请求重定向到你的MedicareLocatorServlet.class进行处理,然后发回http响应。

因此,您应该检查eclipse是否已经编译了该类,并将其放入服务器webapps目录中。默认情况下,linuxeclipse会将类文件放在目录中:workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/webapps。工作空间是eclipse工作空间。因此,您应该cd到此目录并检查".class"文件是否已准备就绪。如果没有,您应该构建并部署您的项目。

最新更新