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:
Desgraciadamente, cuando intento generar el PDF dentro de la aplicación me lanza una excepción quejándose de que no encuentra el archivo:JasperReport reporte = (JasperReport) JRLoader.loadObjectFromFile(archivo.jasper);
Código:
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: archivo.jasper
Código:
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?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
Gracias por adelantado