Errores frecuentes en aplicaciones Struts2 con Eclipse y Tomcat
Introducción
¿Tu aplicación struts2 falla?
¿Ni si quiera arranca el tomcat o te está vomitando toda la stacktrace, toda la pila de llamadas erróneas por la consola?
Antes de echarse a llorar, desesperarse, increpar al proyecto apache, al profesor debes asegurarte de unos mínimos:
- Tu proyecto no tiene errores de compilación
- Tus clases y jsps no tienen ni un solo error.
- Los ficheros XML no tienen ni un solo error.
- No has confundido mayúsculas/minúsculas
Cómo revisar la consola
Cuando en la consola veas un montón de errores encadenados que no cunda el pánico. En java un simple error puede mostrar toda una ristra de errores que en realidad no es más que un volcado de llamadas que fallan en cadena, no porque sea especialmente grave.
Simplemente sube hacia arriba y observa dónde comienza el error. En algún punto te dirá que tienes un error en una clase tuya en una línea concreta. No es un error de compilación, es simplemente que en ese punto se ha desencadenado un error: no encuentra un fichero, no accede a la red, no encuentra una propiedad, algo es nulo…
Debes corregir ese error en esa clase o entender porqué ocurre, pero no te dejes agobiar por las 200 y pico líneas de Exception.
Error 404
Parece que no encuentra los contenidos, ni las acciones struts ni las jsp ni nada. Y lo peor es que algo que antes funcionaba ahora no. Primero asegúrate de que realmente el recurso al que quieres acceder existe. Obvio.
-> Solución: revisar
Revisa la consola porque tu proyecto tiene un error, y ahí se está explicando el porqué. Un fallo en un el struts.xml, una clase action que no existe, etc.. GOTO introducción.
Proyecto erróneo o con exclamación
Puede que al mover un proyecto de un lado para otro tengas problemas porque está configurado para otro JDK, o las librerías de tomcat no están en el mismo sitio, etc… A veces incluso deja de reconocer las clases y librerías básicas (String, java.util.*) o las librerías de tomcat (HttpServer, Session, ...). Debes :
->Solución: verificar el buildpath
Si hay algo incorrecto al entrar en la pestaña libraries del buildpath debieras ver alguna de ellas en rojo o una nota que dice (Unbound). Quita esa librería y añadela otra vez.
En el caso del JRE: debes añadir una library de JRE y asociar la de tu sistema.
En el caso de Tomcat: debes añadir una library de “Server Runtime” y seleccionar la de tomcat.
No encuentra action
Puede que nos salte un error en la consola tan grande como este:
Caused by: Unable to load configuration. - action - file:/C:/Users/Trabajo/Desktop/Trabajos/Pello/Sistemas%20de%20gestión%20Empresarial/Eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Tulebox/WEB-INF/classes/struts.xml:22:50 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490) ... 15 more Caused by: Action class [info.fer.dice.Dice] not found - action - file:/C:/Users/Trabajo/Desktop/Trabajos/Pello/Sistemas%20de%20gestión%20Empresarial/Eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Tulebox/WEB-INF/classes/struts.xml:22:50
-> Solución: verificar paquetes, directorios y acciones
En ese caso debemos revisar el fichero struts.xml o el que esté incluyendo a través de la directiva
package org.cuatrovientos.struts2.example;
Entonces la clase debe encontrarse en el directorio
src > org > cuatrovientos > struts2 > example > SuperAction
Y en el action debe poner lo siguiente:
Deben coindicir si no dará error de Action no encontrada.
Cambio algo y sigue fallando lo mismo
Muchas veces corriges un error y el error persiste. O lo que es peor, algo que funcionaba, cambias alguna tontería y deja de arrancar. Parece ser que a veces el tomcat se queda pinzado, o por mucho que ejecutes el proyecto en el servidor te está ejecutando una versión vieja.
->Solución: vacía el Tomcat
Para asegurarte de que el proyecto que ejecutas es el bueno, saca todos los proyectos de tomcat. En la pestaña servidores, despliega el tomcat y quítale los proyectos, al menos el que quieres ejecutar. si ese proyecto viene de un copy paste de otro quita todos.
Ahora ejecuta de nuevo y lo harás con la última versión.
Tomcat no arranca
O Tomcat encountered a problema y resulta que no es capaz de iniciarse y no puedes iniciar la aplicación. Puede deberse a dos razones.
- Hay otra instancia de tomcat en marcha. Por ejemplo la del XAMPP. Hay que pararla o hacer que eclipse se ejecute en ella.
- Tomcat no es capaz de reiniciarse.
Por si acaso cárgate todos los proyectos que hay en el tomcat (pestaña servers, desplegar el tomcat y quitar todos), y luego detén el servidor. Ahora vuelve a ejecutar la aplicación y lo hará con más garantías de éxito.
... and greetz for u ;)