Boa tarde a todos!
Tenho uma aplicação que gera alguns relatórios em JasperReports, até ai não tenho nenhum problema, tudo funciona perfeitamente.
A questão é que agora implementei um “serviço de impressão”, onde de um mobile envio o comando e o serviço imprime o relatório diretamente, ou pelo menos deveria. Entretanto ele está dando uma exception como se tivesse faltando uma lib no patch do sistema, segue abaixo:
java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:82)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
at net.sf.jasperreports.engine.JasperFillManager.fillToFile(JasperFillManager.java:542)
at net.sf.jasperreports.engine.JasperFillManager.fillToFile(JasperFillManager.java:522)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:888)
at br.n2m.impressao.etq.laser.relatorio.RelatorioEtqLaser.imprime(Unknown Source)
at br.n2m.impressao.etq.termica.classes.ListObjImpEtq.imprimeReport(Unknown Source)
at br.n2m.impressao.etq.termica.classes.ListObjImpEtq.geraListParametros(Unknown Source)
at br.n2m.impressao.etq.termica.classes.ListObjImpEtq.trataIteracoes(Unknown Source)
at br.n2m.impressao.etq.termica.classes.ListObjImpEtq.imprimeEtqLaser(Unknown Source)
at br.n2m.impressao.etq.termica.classes.ListObjImpEtq.imprimeObjetos(Unknown Source)
at br.n2m.impressao.etq.op.EtiquetaManager.imprimeDadosProdutoServico(Unknown Source)
at br.n2m.impressao.etq.op.EtiquetaManager.imprimeEtiquetaProduto(Unknown Source)
at br.n2m.impressao.etq.op.ThreadImprimeLote.imprimeObjetos(Unknown Source)
at br.n2m.impressao.etq.op.ThreadImprimeLote.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
Já pesquisei em alguns fóruns, mas vi algumas pessoas reclamando deste erro quando utilizam o Tomcat, que não é meu caso, pois utilizo wrapperService. Abaixo o método que faz a impressão em si:
public boolean imprime(HashMap<String, Object> parametros, String relatorio) {
Log.getInstance().logInfo("IMPRIMINDO ETQ: Imprime");
try {
final String urlArq = AplicDir.KEY_DIR_APLICACAO + AplicDir.KEY_DIR_RELATORIOS_ETQ + relatorio;
final DadosRelatorioDataSource dadosRel = new DadosRelatorioDataSource(true, parametros);
final JasperPrint print = JasperFillManager.fillReport(urlArq, parametros, dadosRel);
// JasperViewer.viewReport(print, false);
Log.getInstance().logInfo("ENVIANDO PARA IMPRESSORA");
JasperPrintManager.printPage(print, 0, false);
return true;
} catch (final NoClassDefFoundError e) {
Log.getInstance().logException("Erro ao carregar relatorio", e);
e.printStackTrace();
return false;
} catch (final JRException e) {
Log.getInstance().logException("Erro ao carregar relatorio", e);
e.printStackTrace();
return false;
} catch (final Exception e) {
Log.getInstance().logException("Erro ao carregar relatorio", e);
e.printStackTrace();
return false;
}
}
Coloquei alguns logs para acompanhar o processo e ele para neste método, quando executo a primeira vez ele não exibe a exception, mas também não imprime, quando tento a segunda vez ele exibe o erro.
Gostaria de saber se alguém já utilizou este processo e o que pode estar ocorrendo.
Desde já agradeço.