【发布时间】:2009-03-04 16:52:57
【问题描述】:
我正在尝试进入 Java Web 开发,但似乎遇到了 Tomcat 和一个极其简单的 servlet 的奇怪问题。每次我尝试加载应用程序时,catalina 日志都会喷出这个:
Caused by: java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name MyServlet
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:2393)
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:2373)
... 40 more
Mar 4, 2009 10:37:58 AM org.apache.catalina.startup.ContextConfig applicationWebConfig
SEVERE: Parse error in application web.xml file at jndi:/localhost/mywebapp/WEB-INF/web.xml
java.lang.IllegalArgumentException: Servlet mapping specifies an unknown servlet name MyServlet
很有道理。它似乎找不到我的 servlet。但是,servlet 似乎在正确的位置。我可以在 WEB-INF/classes/MyServlet.class
清楚地看到它作为参考,这是我目前正在使用的 web.xml 文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<description>My first web app in Java.</description>
<display-name>My Web App</display-name>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
</web-app>
如您所见,我保持简单...但它不断抛出此异常。 Java 中的基本 Web 应用是什么样的,我缺少哪些组件?
更新
为了绝对确定它不是某种人工制品,我启动了一个新的 Tomcat 副本并再次尝试。这样做后,这开始出现在日志文件中:
SEVERE: Error deploying web application archive mywebapp.war
java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class MyServlet)
我为 MyServlet 类转储了我的 .class 文件,使用 -target 1.5 对其进行了重建,重新打包了 .war,一切正常。
非常感谢您的帮助!一个很好的故障排除课程永远不会伤害任何人。
【问题讨论】:
-
优秀的侦探作品 spligak :-)