用于eclipse的tomcat中的servlet的java.lang.ClassNotFoundException
我开始使用servlet在eclipse中开发一个java web应用程序,并在我的localhost上使用tomcat服务器进行测试。 我已经在tomcat中部署了应用程序,但是当我尝试在浏览器中加载目标URL时,我得到以下堆栈跟踪:
Jul 31, 2013 2:58:31 PM org.apache.catalina.core.ApplicationContext log INFO: Marking servlet ImageServlet as unavailable Jul 31, 2013 2:58:31 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Allocate exception for servlet ImageServlet java.lang.ClassNotFoundException: test.ImageServlet at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
ImageServlet类非常清楚地位于我的eclipse工作区的myproject / src / test文件夹中,其中myproject是eclipse项目的名称,test是包。
web.xml位于myproject / web / WEB-INF / web.xml中,myproject.xml位于myproject / myproject.xml
web.xml的内容是:
ImageServlet test.ImageServlet ImageServlet /image
myproject.xml的内容是:
任何人都可以告诉我如何修复我的代码,以便它不会抛出ClassNotFoundException?
有时在创建filter或servlet时,类文件不会在eclipse中的build文件夹中生成。清除应用程序并构建一次,在上面的路径中生成一个.class文件。 在某些情况下,这会删除class not found错误。
这是一个maven项目? 在maven项目中,src / test是unit testing的位置,从构建和战争中排除,尝试更改包名称并重试。
看起来你正在构建一个基于Maven的项目,而你正在把你的课程放在错误的位置
您应该使用src/main/java
来放置您的类,并使用src/test/java
来对其进行测试(例如,如果您有任何JUnit测试)。
最近我的一个项目遇到了这个问题(我说这是因为尽管使用相同的JAR和其他所有项目,其他工作完全正常)。 多次尝试清理项目,多次删除.metadata文件夹。 没有任何效果。 这些类根本没有编译。
有用的是在项目的构建路径中删除未绑定的jre6库。
- 右键单击项目并转到“属性”
- 转到“部署程序集”
- 确保您有两个映射,如下图所示。 eclipse中的Web部署程序集 。 如果没有,则添加缺少的映射。
- 单击“应用”
- 清理,构建和运行您的项目。
如果在WEB-INF / classes部署中没有类test.ImageServlet
,那么Tomcat将无法找到它。
我的猜测是你没有正确编译,打包和部署WAR文件到Tomcat。
如果您的项目是Maven项目,您可以尝试清理它。 单击“项目”>“清理”,然后选择要清理的项目。
有时候,如果你将Maven与控制台和Eclipse一起使用,目标就会“疯狂”,唯一的方法就是清理项目。
- ClassNotFoundException与NoClassDefFoundError
- java.lang.ClassNotFoundException:org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
- Wildfly 8.1 ClassNotFound org.apache.http.conn.ClientConnectionManager
- 如何捕获java.lang.NoClassDefFoundError?
- ClassNotFoundException:com.mysql.jdbc.Driver
- Tomcat为其他开放日食项目中的类抛出ClassNotFoundexception
- 如何解决此错误引起:java.lang.ClassNotFoundException
- classNotFound在eclipse中在Tomcat上使用JDBC进行MYSQL时出现exception
- ClassNotFoundException启动Tomcat时的DispatcherServlet(Maven依赖项未复制到wtpwebapps)