java - Tomcat 无法找到我的 Servlet 并抛出异常,但为什么呢?

标签 java tomcat

我正在尝试进入 Java 网络开发,但似乎遇到了 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 并且一切正常。

非常感谢您的帮助!故障排除的好教训永远不会伤害任何人。

最佳答案

好吧,鉴于更新的信息,您的问题似乎是您用于类的编译器可能是比运行 Tomcat 的编译器更新的 JDK 版本。

检查用于启动 Tomcat 的 JDK 版本,然后查看您是否可以采取一些措施来协调该版本与您用来编译 servlet 的版本之间的版本差异。

这应该可以解决您的问题。

关于java - Tomcat 无法找到我的 Servlet 并抛出异常,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/611465/

相关文章:

tomcat - 在 Tomcat 5.5 中重定向

mysql - Groovy 性能

java - Alfresco 插件元数据编写器指南

Java 文本字段焦点

Java Amazon S3 Post 表单

java - Websocket 阻塞,不会因客户端拔出/断电而超时

Java - 尝试计算来自 Getter 的值的平均值

java - 如何仅从子元素获取文本 - Webdriver - Java

java - 如何在 Tomcat 启动期间禁止特定应用程序启动?

java - 有什么办法可以在运行时将字符串存储在 context.xml 中?