有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个运行良好的Servlet。由于一些奇怪的错误,我在探索这个空间(这个Servlet领域的新手),并选择“清理”服务器(而不是项目)。这样做之后,我得到了以下错误:

HTTP Status 500 - Wrapper cannot find servlet class MyServ or a class it depends on

我看到了其他人在哪里遇到这个错误,因为Servlet没有定义包,但这个Servlet正在工作,我从未更改过Servlet代码

是什么导致了这一切?我正在使用Eclipse开普勒来运行这个环境

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)

网络。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) 个答案

  1. # 1 楼答案

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

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

    Here is where you specify the package in Eclipse

  2. # 2 楼答案

    我不得不删除旧的servlet,然后从头开始构建一个新的servlet

  3. # 3 楼答案

    这里需要注意以下几点:

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

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

    • 您还可以停止服务器、清理项目和刷新