Я пытаюсь заняться веб-разработкой на Java, но, похоже, сталкиваюсь со странной проблемой с Tomcat и чрезвычайно простым сервлетом. Журнал каталины извергает это каждый раз, когда я пытаюсь загрузить приложение:
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
Имеет приличный смысл. Кажется, он не может найти мой сервлет. Тем не менее, сервлет, кажется, находится в нужном месте. Я могу ясно видеть это в 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, какие компоненты мне не хватает?
Обновление
Чтобы быть абсолютно уверенным, что это не какой-то артефакт, я запустил свежую копию Tomcat и попробовал снова. После этого это начало появляться в файлах журнала:
SEVERE: Error deploying web application archive mywebapp.war
java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class MyServlet)
Я сбросил свой файл .class для класса MyServlet, перестроил его с -target 1.5, перепаковал .war, и все заработало отлично.
Большое спасибо за помощь! Хороший урок в поиске неисправностей никогда никому не причиняет вреда.