Hola,
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:
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());}}
}
}
este es el log de la llamada a este trozo de código:
Código:
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])
y esta la traza de error:
Código:
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)
antes de la traza de error obtengo unos warnings:
Código:
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
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.
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