我有一个运行正常的Servlet。由于一些奇怪的错误,我正在探索空间(这个Servlet区域的新用户)并选择“清理”服务器(而不是项目)。这样做后,我收到以下错误:
HTTP状态500 - 包装器找不到servlet类MyServ或它依赖的类
我已经看到其他人得到这个错误,因为Servlet没有定义包,但是这个Servlet正在工作,我从未改变过servlet代码。
清洁可能对此有何贡献?我正在使用Eclipse Kepler来运行这个环境。
堆栈追踪:
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>
显示如何构建不是一个选项的图片
答案 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>
答案 1 :(得分:0)
这里需要注意的事情:
将您的类包括在默认包中的servlet是一种非常糟糕的做法。尝试将servlet(MyServ)添加到适当的包中。
错误表明找不到servlet。你干净后编译了吗?您可以在servlet中进行一些更改以强制编译。
您还可以停止服务器,清理项目并刷新。
答案 2 :(得分:0)
我不得不删除旧的servlet并从头开始构建一个新的。