Estoy tratando de entrar en el desarrollo web de Java, pero parece que se está encontrando con un problema extraño con Tomcat y un servlet extremadamente simple. El registro de catalina está escupiendo esto cada vez que intento cargar la aplicación:Tomcat no puede encontrar mi Servlet y está lanzando excepciones, pero ¿por qué?
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
Tiene sentido decente. Parece que no puede encontrar mi servlet. Sin embargo, el servlet parece estar en el lugar correcto. claramente lo puedo ver en WEB-INF/classes/MyServlet.class
Como referencia, este es el archivo web.xml Actualmente estoy usando:
<?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>
Como se puede ver, Estoy manteniendo las cosas simples ... pero arroja continuamente esta excepción. ¿Qué aspecto tiene una aplicación web básica en Java? ¿Qué componentes me faltan?
actualización
para estar absolutamente seguro de que no era un artefacto de algún tipo, que puso en marcha una nueva copia de Tomcat y volvió a intentarlo. Al hacerlo, este comenzó a aparecer en los archivos de registro:
SEVERE: Error deploying web application archive mywebapp.war
java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class MyServlet)
Me deshice de mi archivo .class para la clase MyServlet, reconstruida con -target 1.5, reenvasado el .war y todo funcionaba perfectamente.
¡Muchas gracias por la ayuda! Una buena lección de solución de problemas nunca lastima a nadie.
Bueno trabajo de detective spligak :-) – toolkit