Archivo de la etiqueta: classpath

Problemas con Maven y Eclipse

Después de varios días de problemas en los que no podía ejecutar una aplicación web que tiene Java, Struts y Maven, que me tiraba este error:

java.lang.NullPointerException
 org.apache.jsp.homer_jsp._jspInit(homer_jsp.java:22)
 org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
 org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:88)

El error de por sí es encantador, ya que ese método jspinit es un método de un JSP compilado… al que no tenemos acceso.

Después de buscar en Google, parece que el problema es una superposición de clases (con probables pero no visibles diferentes versiones) por culpa de Maven y/o Eclipse, que en teoría estaría tirando los jars dentro de la carpeta WEB-INF/lib, estos se suben al server Tomcat reemplazando a los verdaderos y BLAM: NullPointerException.

Estos jars son jsp-api-2.1.jar y servlet-api-2.5.jar. Sin embargo, oh sorpresa, voy a esa carpeta y… no existe. Ni siquiera hay carpeta WEB-INF/lib en el proyecto.

Después de divagar en varias opciones alternativas, se me ocurre buscar en el proyecto a ver si en algún lugar están los benditos jars:


find . -n "*jsp-api-2.1*"

Oh, mas sorpresa, estaban dentro de este directorio:

MIPROYECTO/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/MIPROYECTO/WEB-INF/lib$

Sin saber exactamente qué corno es ese directorio, voy y borro los jars. Después de reiniciar un par de veces Eclipse y Tomcat, finalmente, deja de tirarme el error de los classpath lunáticos.

Anuncios