O erro parece ser simples, mas já está me custando alguns cabelos brancos…
Por questões de desempenho, decidi alterar nossa DANFE. Como gerei o relatório de NFS-e usando o jrxml sem problemas, considerei uma boa opção (até agora…).
Tive dois problemas, mas vou focar no mais critico: O relatório roda perfeitamente no IReport, mas é exibido em branco quando chamado pela aplicação.
Em modo debug, verifiquei que o xml é enviado corretamente. Estou usando a versão 3.5.2 (tentei atualizar para 3.7.3, mas tive ainda mais problemas com ‘cast’ de campos/nodes xml que até então eram apenas strings- java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredElementNSImpl cannot be cast to java.lang.String - e optei por manter a versão antiga mesmo).
Esta é a versão resumida do código da chamada de relatório:
JRXmlDataSource jRXmlDataSourceComXmlDaNotaEletronica;
String caminhoFisicoDoRelatorioDanfeEmDisco;
jRXmlDataSourceComXmlDaNotaEletronica = new JRXmlDataSource(getXmlDaNotaEletronica(nfeVO.getNfelSequencial()), "/NFe/infNFe");
Map<String, Object> parametros = preencherParametros(nfeVO);
JasperPrint relatorio = JasperFillManager.fillReport(caminhoFisicoDoRelatorioDanfeEmDisco, parametros, jRXmlDataSourceComXmlDaNotaEletronica);
JasperViewer.viewReport(relatorio, false);
A variável caminhoFisicoDoRelatorioDanfeEmDisco é preenchida no construtor da classe, apenas declarei ai embaixo para melhor compreensão do código.
É um código demasiadamente simples para me causar tantos problemas… alguma idéia, para que eu não tenha de esperar ‘uma boa noite de sono’ para conseguir enxergar o problema? :lol: