Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/08/2012, 04:12
nerthalas
 
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 13 años, 5 meses
Puntos: 1
JasperReport: no encuentra el archivo .jasper dentro del WAR (FileNotFoundException)

Saludos.

Estoy utilizando la librería JasperReport dentro de un proyecto Maven (arquetipo Webapp). Después de aprender a crear la plantilla PDF y rellenarla con datos procedentes de una consulta SQL me ha surgido un problema que soy incapaz de solucionar.

En la estructura de la aplicación coloco el archivo jasper en el directorio src/main/resources. Una vez compilado el proyecto a WAR aquel aparece en WEB-INF/classes/archivo.jasper. Pues bien, dentro del código JAVA cargo el fichero a través de:

Código:
JasperReport reporte = (JasperReport) JRLoader.loadObjectFromFile(archivo.jasper);
Desgraciadamente, cuando intento generar el PDF dentro de la aplicación me lanza una excepción quejándose de que no encuentra el archivo:

Código:
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: archivo.jasper
Código:
javax.faces.el.EvaluationException: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: archivo.jasper
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIData.broadcast(UIData.java:1093)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
	at java.lang.Thread.run(Thread.java:722)
Caused by: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: archivo.jasper
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:98)
	at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromFile(JRLoader.java:87)
	at es.vampitel.gestionpermisos.util.Utilidad.generaInformeEmpleadoPDF(Utilidad.java:55)
	at es.vampitel.gestionpermisos.beans.SolicitudBB.generaPDF(SolicitudBB.java:651)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 22 more
Caused by: java.io.FileNotFoundException: archivo.jasper
	... 34 more
He probado a colocar la ruta "/classes/archivo.jasper" así como otras alternativas pero ninguna funciona. ¿Alguien sería tan amable de comentarme dónde meto la pata?

Gracias por adelantado