Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Estou com dúvida no curso de Relatórios em Java com JasperReports e iReport, no exercício do capítulo Gerando PDF e outras saídas na aplicação Java.

Exceção ao executar a geração do pdf:

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493) at java.lang.Class.getConstructor0(Class.java:2803) at java.lang.Class.getConstructor(Class.java:1718) at net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:690) at net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.java:263) at net.sf.jasperreports.engine.JasperCompileManager.getEvaluator(JasperCompileManager.java:285) at net.sf.jasperreports.engine.fill.JRFillSubreport.createEvaluator(JRFillSubreport.java:438) at net.sf.jasperreports.engine.fill.JRFillSubreport.loadReportEvaluator(JRFillSubreport.java:426) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:395) at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:287) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:457) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:337) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:273) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:144) 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.fill(JasperFillManager.java:276) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745) at br.com.caelum.financas.relatorio.TesteGeraRelatorio.main(TesteGeraRelatorio.java:29) Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationFailedException at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 23 more

8 respostas

Oi Glailson,

Verifique se vc trocou a linguagem Groovy para Java no relatório e tbm no subrelatório. Recompile ambos os relatórios.

Abraços

Olá Nico, eu já fiz a alteração e consigo gerar os arquivos .jasper. Este erro ocorre quando tento gerar o arquivo PDF.

Oi Glailson

Abre o arquivo do relatório principal (o arquivo jrxml) e procure o elemento subreport. Depois abre o jrxml que o elemento subreport indica. Nele verifique a linguagem (que deve ser Java) e recompila.

Depois gera o PDF novamente.

Abraços

Nico, eu abri o arquivo e o trecho da tag subreporté o seguinte:

<![CDATA[$P{REPORT_CONNECTION}]]> <![CDATA[$P{SUBREPORT_DIR} + "gastos_por_mes_subreport1.jasper"]]>

Não existe nenhum elemento com o nome groovy. Já fiz todas as alterações possíveis. Não sei o que pode estar ocorrendo. Pode me mandar os arquivos .jrxml para que eu possa testar aqui?

solução!

Oi Glaison,

Estou sem os arquivos aqui, mas você pode me mandar o seu: nico.steppat@caelum.com.br

E só para garantir: Você abriu gastos_por_mes_subreport1.jrxml que está dentro do $P{SUBREPORT_DIR} , substituiu groovy por java e recompilou para criar o arquivo .jasper. Depois gerou o PDF e continua com a exceção?

abs

Nico, eu refiz tudo e agora deu certo, vai entender. Obrigado pela ajuda mesmo assim.

Sem dúvida o problema está no nome da linguagem. Altere para java que irá funcionar. Para alterar, edite pelo próprio eclipse o arquivo .jrxml. Na edição localize a palavra "groovy" e a substitua por "java".

Comigo deu o mesmo problema, porém não funciona de jeito nenhum. Eu refiz a aula várias vezes. Iniciei no 5.6.0 achei que poderia ser problema de compatibilidade, refiz novamente no 4.7.0 e nada. Só roda e gera o pdf quando apago o subreport. Alguém sabe o que pode ser??

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software