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

时间:2013-11-26 02:26:48

标签: java servlets classnotfoundexception

我对Java Servlets比较陌生。我正在尝试从MedicareLocatorServlet中的doGet()方法创建一个名为HospitalFinder的类的实例。 HospitalFinder类使用外部Libs。当我从我的网页发起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项目。 有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

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

1.eclipse会将所有源代码“编译”成几个.class文件。(也许使用编译并不是很明确,因为java是一种解释语言)

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

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

所以,你应该检查你的eclipse是否已经编译了这个类,并将它放入你的服务器webapps目录中。默认情况下,linux eclipse会将类文件放在目录中:workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/webapps .workspace是你的eclipse workspace.So,你应该cd到这个目录并检查“.class”文件是否准备就绪。如果没有,你应该构建您的项目并进行部署。