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