tengo un problema que no soy capaz de solucionar.
He creado un fichero jrxml con jasper studio 6 que cuando hago la previsualización funciona correctamente pero que cuando ejecuto desde java obtengo la excepción java.lang.NumberFormatException y no lo comprendo.
Este es el código java:
Código:
este es el log de la llamada a este trozo de código:public String getInformeReport(String idEncuesta, String urlJrxml, String urlPDFs, Entidad entidad) throws EncuestasException { //LOG util.Log.log("getInformeReport(idEncuesta: "+idEncuesta+", " + "urlJrxml: "+urlJrxml+", urlPDFs: "+urlPDFs+", entidad: "+entidad+")"); //Comprobaciones if(idEncuesta == null || "".equals(idEncuesta) || entidad == null || entidad.getIdEntidad() == null){ throw new EncuestasException("Falta algún dato obligatorio"); } // TODO: comprobar que el usuario que pide este informe puede verlo // Connection conn = null; try { JasperReport report = JasperCompileManager.compileReport(urlJrxml+"Informe20150424.jrxml"); conn = this.abrirConexion(); // Map parameters = new HashMap(); parameters.put("id_encuesta", new Integer(idEncuesta)); parameters.put("id_entidad", entidad.getIdEntidad() ); parameters.put("fecha", Util.devuelveFechaActual() ); parameters.put("SUBREPORT_DIR",urlJrxml);//Necesario para imágenes y subreports // String nombreFichero = util.Util.generaNumeroAleatorioDe8Cifras() ; JasperPrint print = JasperFillManager.fillReport(report, parameters, conn); JasperExportManager.exportReportToPdfFile(print, urlPDFs+nombreFichero+".pdf"); return nombreFichero; } catch (JRException e) { Log.log("No pudo obtenerse el informe"); e.printStackTrace(); throw new EncuestasException("No pudo obtenerse el informe", e); } catch(Exception e){ Log.log("No pudo obtenerse el informe"); e.printStackTrace(); throw new EncuestasException("No pudo obtenerse el informe", e); }finally{ if(conn != null){try{conn.close();}catch(Exception e){util.Log.log("No se pudo cerrar la coneción " + e.getMessage());}} } }
Código:
y esta la traza de error:Sun Apr 26 10:29:51 CEST 2015 Encuestas getInformeReport(idEncuesta: 35, urlJrxml: K:\\Codigo\\Encuestas\\build\\web\\iReports\\jrxml\\, urlPDFs: K:\\Codigo\\Encuestas\\build\\web\\iReports\\PDF\\, entidad: entidad[idEntidad: 2, nombre: Probando])
Código:
antes de la traza de error obtengo unos warnings:Sun Apr 26 10:29:53 CEST 2015 Encuestas No pudo obtenerse el informe java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Integer.java:454) at java.lang.Integer.parseInt(Integer.java:527) at net.sf.jasperreports.engine.util.JRProperties.asInteger(JRProperties.java:411) at net.sf.jasperreports.engine.util.JRProperties.getIntegerProperty(JRProperties.java:378) at net.sf.jasperreports.engine.util.JRStyleResolver.getFirstLineIndent(JRStyleResolver.java:643) at net.sf.jasperreports.engine.base.JRBaseParagraph.getFirstLineIndent(JRBaseParagraph.java:196) at net.sf.jasperreports.engine.fill.TextMeasurer.renderNextLine(TextMeasurer.java:629) at net.sf.jasperreports.engine.fill.TextMeasurer.renderParagraph(TextMeasurer.java:459) at net.sf.jasperreports.engine.fill.TextMeasurer.measure(TextMeasurer.java:400) at net.sf.jasperreports.engine.fill.JRFillTextElement.chopTextElement(JRFillTextElement.java:541) at net.sf.jasperreports.engine.fill.JRFillTextField.prepare(JRFillTextField.java:651) at net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:331) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:384) at net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:358) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:346) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:280) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:151) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:909) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:849) at Modelo.Modelo.getInformeReport(Modelo.java:578) at Controlador.Delegate.getInforme(Delegate.java:257) at Controlador.Controlador.processRequest(Controlador.java:655) at Controlador.Controlador.doGet(Controlador.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at Filtros.Filtro.doFilter(Filtro.java:98) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722)
Código:
No entiendo porque cuando ejecuto la previsualización con jasperstudio no falla. Obviamente pongo en la previsualización los valores que cargo en la ejecución desde java.abr 26, 2015 10:29:52 AM net.sf.jasperreports.engine.component.ComponentsEnvironment findBundles WARNING: Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components abr 26, 2015 10:29:52 AM net.sf.jasperreports.engine.component.ComponentsEnvironment findBundles WARNING: Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components abr 26, 2015 10:29:52 AM net.sf.jasperreports.engine.component.ComponentsEnvironment findBundles WARNING: Found two components for namespace http://jasperreports.sourceforge.net/jasperreports/components
Sin embargo,cuando lo ejecuto desde java obtengo esta excepción y no sé porque si le paso los mismos valores aquí falla.
El código java lo tengo copiado de otro proyecto conel que genero pdfs sin problemas así que también descarto que el problema veng por ahí.
Cualquier orientación que pudieseis darme os la agradecería porque no sé que puede estar fallando