Olá galera
Eu preciso gerar relatórios puxando uns dados do banco
Eu jah vi q existem algumas ferramentas para isso JasperReports
Como eu faço pra instala esse JasperReports no eclipse?
Estou usando o eclipse galileu para o ubuntu 64bits
[color=darkblue] O Jasper é uma boa opção, mas se quiser algo mais simples, você pode gerar uma planilha em Excel, você tem a opção de JExcel e POI também :[/color]
o BIRT é especifico para aplicações web.
já vi algumas explicações de como chamar os relatorios numa aplicação desktop, mas axo melhor usar um especifico para desktop.
Para criar os relatorios em Jasper vc deve utilizar o IReport. Ferramenta visual para relatorios. Download IReport
Para criar ou chamar dentro do java os relatorios pode seguir este tutorial: Tutorial
private static final String url = "jdbc:mysql://localhost:3306/banco_eclusas";
private static final String driver = "com.mysql.jdbc.Driver";
private static final String login = "root";
private static final String pwd = "root";
public IReportExemple() {
}
public void gerar( String jasperFile ) throws JRException , SQLException, ClassNotFoundException {
Class.forName( driver );
Connection con = DriverManager.getConnection( url , login , pwd );
Statement stm = con.createStatement();
String query = "select * from componentes";
ResultSet rs = stm.executeQuery( query );
//implementação da interface JRDataSource para DataSource ResultSet
JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
//executa o relatório
Map parametros = new HashMap();
parametros.put("nomeComponente", new String());
/* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
JasperFillManager.fillReportToFile( jasperFile, parametros, jrRS );
/* Exporta para o formato PDF */
JasperExportManager.exportReportToPdfFile( "relatorio.jrprint" );
}
public static void main(String[] args) {
try {
new IReportExemple().gerar( "/home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml " );
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/code]
o erro é o seguinte
net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: /home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:81)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:462)
at teste.IReportExemple.gerar(IReportExemple.java:42)
at teste.IReportExemple.main(IReportExemple.java:50)
Caused by: java.io.FileNotFoundException: /home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml
... 4 more
ele n tah achando o relatorio parece… vc compilo o relatorio?!
ele tem q geral o .jrxml e o .jasper dentro da pasta “/home/bruno/Desktop/iReport-3.0.0/bin/relatorio.jrxml”
Agora eu gerei outro relatório, gerou o .jasper e o .jrxml
ae em vez de eu passar o .jrxml eu passo o .jasper
da o seguinte erro
Exception in thread "main" java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
at java.lang.Class.getDeclaredField(Class.java:1880)
at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1610)
at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:52)
at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:425)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:413)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:480)
at net.sf.jasperreports.engine.base.JRBaseReport.readObject(JRBaseReport.java:736)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:94)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:462)
at teste.IReportExemple.gerar(IReportExemple.java:42)
at teste.IReportExemple.main(IReportExemple.java:50)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 40 more
Bom modificado para chamar o jrxml deu o seguinte erro
net.sf.jasperreports.engine.JRException: Error loading object from file : /home/bruno/Desktop/relatorios/report1.jrxml
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:98)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:462)
at teste.IReportExemple.gerar(IReportExemple.java:42)
at teste.IReportExemple.main(IReportExemple.java:50)
Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:57)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:93)
... 3 more