我在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。
答案 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">