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
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.