删除@WebServlet会导致java.lang.ClassNotFoundException

时间:2014-07-21 20:37:41

标签: eclipse tomcat servlets

我在eclipse Juno中使用Tomcat 7和servlet 3.0规范(jdk 1.7)。 当我使用Eclipse IDE创建一个新的servlet时,它会自动使用@WebServlet("/foo")语句创建一个新的映射,一切正常(servlet可以工作)。

删除@WebServlet("/foo")映射并使用web.xml中的手册:

<web-app>
    <servlet>
         <servlet-name>Servlet1</servlet-name>
         <servlet-path>foo.Servlet</servlet-path>
    </servlet>
    <servlet-mapping>
         <servlet-name>Servlet1</servlet-name>
         <url-pattern>/foo</url-pattern>
    </servlet-mapping>
</web-app>

导致Tomcat崩溃:

 SEVERE: Allocate exception for servlet java.lang.ClassNotFoundException:

我确定foo.Servlet.Servlet1是正确的路径和名称。 我在启动Tomcat之前手动编译servlet?我直接从eclipse ide运行项目,设置Tomcat 7 Runtime Environment。

1 个答案:

答案 0 :(得分:1)

web.xml中的Servlet声明不正确,您需要更改

<servlet-path>foo.Servlet</servlet-path>

<servlet-class>foo.Servlet</servlet-class>

此外,您应该在web.xml文件中添加schema declaration,这样可以通过在xml编辑器中显示错误来避免所有这些麻烦,因为<servlet-path>之内没有任何内容它

<?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_3_0.xsd"
    id="WebApp_ID" version="3.0">