Bom pessoal Tenho um problema com meu relatorio…
Na verdade ele funciona, busquei de alguns exemplos e consegui faze-lo funcionar imprimindo a tabela com os dados e etc… show de bola tudo funcionando perfeito, se eu não precisasse de mudar alguns parametros.
Fiz alguns testes e pelo simples fato de eu mudar algo de posição ou aumentar o tamanho do pageHeader de 30 pra 31(inacreditável não, é eu sei), ele ja me reporta uma nullPointer na cara, sendo que não mudei os parametros e não mudei a minha servlet que cria o relatorio.
classe GerarRelatorioCliente.java:
List<Cliente> clientesLista = new ArrayList<Cliente>();
clientesLista.add(new Cliente("Paulo Eduardo", "Copacabana, 54","[email removido]", "São Paulo","12323"));
clientesLista.add(new Cliente("Adercio Ribeiro", "Ipanema,324","[email removido]", "Bahia","123213"));
clientesLista.add(new Cliente("Anderson Piotto", "Lapa, 44","[email removido]", "São Pauloo","123123"));
clientesLista.add(new Cliente("Jonas Jr", "Centro, 32","[email removido]", "São Paulo","12323"));
clientesLista.add(new Cliente("Renan", "Lapa, 342","[email removido]", "São Paulo","123213"));
Map<Object, Object> parametros = new HashMap<Object, Object>();
ServletContext context = getServletContext();
//Array de byte que servirá para que o usuario possa baixar o relatorio em pdf
byte[] bytes = null;
try {
JRBeanCollectionDataSource jrDT = new JRBeanCollectionDataSource(clientesLista);
parametros.put("titulo", "Relatórios de Clientes");
parametros.put(clientesLista, jrDT);
parametros.put("total","Total de Clientes: " + clientesLista.size());
JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(context.getRealPath("/WEB-INF/reports/clientes.jasper"));
//Exporta o relatorio criado com os dados passados para o usuario e armazena no array de bytes
bytes = JasperRunManager.runReportToPdf(relatorioJasper,
parametros, new JRBeanCollectionDataSource(clientesLista));
} catch (JRException e) {
e.printStackTrace();
}
if (bytes != null && bytes.length > 0) {
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment; filename="
+ "Relatorio Clientes" + ".pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
quando uso o relatorio que tenho aqui pronto funciona que é uma beleza . Se eu mudar o tamanho da banda ja era tomo a nullpointer
<title>
<band height="38" splitType="Stretch">// Se eu mudar aqui ja era fode tudo kkk
<textField>
<reportElement uuid="d5d6f737-d615-4e03-b751-cca326cd24d5" x="109" y="0" width="349" height="35"/>
<textElement>
<font size="20" isBold="true"/>
<paragraph lineSpacing="1_1_2"/>
</textElement>
<textFieldExpression><![CDATA[$P{titulo}]]></textFieldExpression>
</textField>
</band>
</title>
aqui está o log do erro que estou tomando
SEVERE: Servlet.service() for servlet [br.com.future.relatorios.GerarRelatorioClientePdf] in context with path [/AdvocaciaLCA] threw exception
java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)
at net.sf.jasperreports.engine.fill.JRFillTextField.getFormat(JRFillTextField.java:706)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:394)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:326)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:262)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:421)
at br.com.future.relatorios.GerarRelatorioClientePdf.doPost(GerarRelatorioClientePdf.java:63)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
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:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Ficou meio grande mas não consegui resolver de nenhuma maneira