Jasper Reports

2 respostas
Rafael_Guerreiro

Fala pessoal, tudo bem?

Então, eu, antes, estava com problema para fazer os relatórios, comprei o livro 'Dominando Relatórios JasperReports com iReport' do Edson Gonçalves, mas estou enfrentando um problema e uma dúvida:

Problema: Não consigo executar o relatório no java, o erro é o seguinte:
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:469)
	at net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:235)
	at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:424)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:430)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:78)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:58)
	at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:52)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
	at teste.TesteReport.main(TesteReport.java:25)
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationFailedException
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 17 more
E o código é o seguinte:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class TesteReport {
	public static void main(String[] args) {
		Connection connection = null;
		try {
			connection = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/warriorsoft44", "root",
					"rbbnl");
			Map<String, Object> parametros = new HashMap<String, Object>();

			String caminhoJasper = System.getProperty("user.dir")
					+ "/src/report1.jasper";

			JasperPrint jasperPrint = JasperFillManager.fillReport(
					caminhoJasper, parametros, connection);

			JasperViewer.viewReport(jasperPrint, false);
		} catch (Exception e) {
			e.printStackTrace();
		}

		try {
			if (!connection.isClosed()) {
				connection.close();
				System.out.println("Finalizado!");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
}

Dúvida:
Como eu trabalho com vários bancos de dados, eu estava pensando em alguma forma de fazer esta consulta com o Hibernate(e com ele já consigo direcionar para o banco correto de cada empresa) e disponibilizar esse resultado para o JasperReports, mas pelo que vi, ele faz a consulta para mim, e eu não consigo vizualizar como faria o relatório para cada banco dinamicamente.

2 Respostas

pedruhenrik
as propriedades do teu relatório deve estar para compilar como groovy.

troque para java.

att,

as propriedades do teu relatório deve estar para compilar como groovy.

troque para java.

att,

Rafael_Guerreiro

Então, eu fui ver se era isso mesmo, mas o estranho é que lá no relatório ja estava para Java…

-Edit-
Só podia ser isso mesmo! Eu “recompilei” o .jasper e então funcionou. Obrigado.

Criado 27 de agosto de 2011
Ultima resposta 28 de ago. de 2011
Respostas 2
Participantes 2