java.lang.ClassNotFoundException for tomcat中的servlet与eclipse [英] java.lang.ClassNotFoundException for servlet in tomcat with eclipse

查看:280
本文介绍了java.lang.ClassNotFoundException for tomcat中的servlet与eclipse的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开始在eclipse中使用servlet开发一个java web应用程序,并且在本地主机上用tomcat服务器进行测试。我已经在tomcat中部署了应用程序,但是当我尝试在浏览器中加载目标网址时,我得到以下堆栈跟踪:

  2013年7月31日2:58:31 PM org.apache.catalina.core.ApplicationContext log 
信息:将servlet ImageServlet标记为不可用
2013年7月31日2:58:31 org.apache .catalina.core.StandardWrapperValve调用
SEVERE:为servlet分配异常ImageServlet
java.lang.ClassNotFoundException:test.ImageServlet
在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader。 java:1714)
在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
在org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
在org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
在org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
在org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
在org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
在org.apache。 catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
在org.apache.catalina.valves。 ErrorReportValve.invoke(ErrorReportValve.java:99)
在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
在org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:118)
在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHt tp11Processor.java:1023)
在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)
在org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.run( AprEndpoint.java:1852)
在java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源)
在java .lang.Thread.run(未知来源)

ImageServlet类显然位于myproject /我的eclipse工作区中的src / test文件夹,其中myproject是eclipse项目的名称,test是包。



web.xml位于myproject / web / WEB-INF / web.xml中,myproject.xml位于myproject / myproject.xml



web.xml的内容是:

 <?xml version =1.0 ?> 
< web-app
xmlns =http://java.sun.com/xml/ns/j2ee
xmlns:xsi =http://www.w3.org / 2001 / XMLSchema-instance
xsi:schemaLocation =http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4 .xsd
version =2.4>

< servlet>
< servlet-name> ImageServlet< / servlet-name>
< servlet-class> test.ImageServlet< / servlet-class>
< / servlet>
< servlet-mapping>
< servlet-name> ImageServlet< / servlet-name>
< url-pattern> / image< / url-pattern>
< / servlet-mapping>
< / web-app>

myproject.xml的内容是:



任何人都可以告诉我如何修复我的代码,以免引起ClassNotFoundException?

解决方案

有时在创建过滤器或servlet时,类文件不会在eclipse中的生成文件夹中生成。清除应用程序并构建一次,在上述路径上生成一个.class文件。在某些情况下,这会删除类未找到错误。


I am starting to develop a java web application in eclipse using servlets and am testing it with tomcat server on my localhost. I have deployed the application in tomcat, but when I try to load the target url in my browser, I get the following stack trace:

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)  

The ImageServlet class is quite clearly located in the myproject/src/test folder in my eclipse workspace, where myproject is the name of the eclipse project, and test is the package.

web.xml is located in myproject/web/WEB-INF/web.xml and myproject.xml is located at myproject/myproject.xml

The contents of web.xml are:

<?xml version="1.0"?>
<web-app 
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

    <servlet>
        <servlet-name>ImageServlet</servlet-name>
        <servlet-class>test.ImageServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ImageServlet</servlet-name>
        <url-pattern>/image</url-pattern>
    </servlet-mapping>
</web-app>

And the contents of myproject.xml are:

Can anyone show me how to fix my code so that it does not throw the ClassNotFoundException?

解决方案

Sometimes on creating of filters or servlets, the class file is not generated in build folder in eclipse.Clean the application and build it once, a .class file is generated in that above said path. This removes class not found error in some cases.

这篇关于java.lang.ClassNotFoundException for tomcat中的servlet与eclipse的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆