清理Tomcat服务器会导致500错误

时间:2014-04-24 05:49:03

标签: java tomcat servlets

我有一个运行正常的Servlet。由于一些奇怪的错误,我正在探索空间(这个Servlet区域的新用户)并选择“清理”服务器(而不是项目)。这样做后,我收到以下错误:

  

HTTP状态500 - 包装器找不到servlet类MyServ或它依赖的类

我已经看到其他人得到这个错误,因为Servlet没有定义包,但是这个Servlet正在工作,我从未改变过servlet代码。

清洁可能对此有何贡献?我正在使用Eclipse Kepler来运行这个环境。

enter image description here

堆栈追踪:

Apr 24, 2014 7:14:16 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet MyServ
java.lang.ClassNotFoundException: MyServ
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:744)

的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Serv</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>MyServ</display-name>
    <servlet-name>MyServ</servlet-name>
    <servlet-class>MyServ</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServ</servlet-name>
    <url-pattern>/MyServ</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MyServ</servlet-name>
    <url-pattern>/Logs/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MyServ</servlet-name>
    <url-pattern>/Analyzer/*</url-pattern>
  </servlet-mapping>
</web-app>

显示如何构建不是一个选项的图片 enter image description here

3 个答案:

答案 0 :(得分:2)

JVM正在抛出ClassNotFoundException,因为项目中存在WEB-INF下没有MyServ类。通过在包中移动Servlet Java类来重构servlet,并在属于项目&amp ;;的web.xml下包含完全限定的类。不是tomcat。 web.xml中的Servlet类应为:

<servlet>
 <servlet-name>MyServ</servlet-name>
<servlet-class>packagename.MyServ</servlet-class>
</servlet>

Here is where you specify the package in Eclipse

答案 1 :(得分:0)

这里需要注意的事情:

  • 将您的类包括在默认包中的servlet是一种非常糟糕的做法。尝试将servlet(MyServ)添加到适当的包中。

  • 错误表明找不到servlet。你干净后编译了吗?您可以在servlet中进行一些更改以强制编译。

  • 您还可以停止服务器,清理项目并刷新。

答案 2 :(得分:0)

我不得不删除旧的servlet并从头开始构建一个新的。