Introducción

¿Tu aplicación struts2 falla?

¿Falla eclipse?

¿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 Seguramente estamos haciendo una referencia a una acción cuya clase no está en la ruta correcta. Verifica que se corresponde el nombre del paquete con la ruta de directorios. Es decir,si la clase es SuperAction si el package de la clase es:

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
Tomcat logo

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.

  1. Hay otra instancia de tomcat en marcha. Por ejemplo la del XAMPP. Hay que pararla o hacer que eclipse se ejecute en ella.
  2. Tomcat no es capaz de reiniciarse.
->Solución: parar y reiniciar

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 ;)