【问题标题】:Removing @WebServlet causes java.lang.ClassNotFoundException删除 @WebServlet 会导致 java.lang.ClassNotFoundException
【发布时间】:2014-07-21 20:37:41
【问题描述】:

我在 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 运行时环境。

【问题讨论】:

    标签: eclipse tomcat servlets


    【解决方案1】:

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

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

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

    您还应该在您的web.xml 文件中添加schema declaration,它可以通过在您的xml 编辑器中显示错误来为您省去所有这些麻烦,因为其中没有诸如&lt;servlet-path&gt; 之类的东西。

    <?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">
    

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 2015-09-06
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      相关资源
      最近更新 更多