[RESOLVIDO]classe para chamar relatório

3 respostas
T

Boa tarde pessoal e um feliz natal para todos, gente estou com um problema numa classe para chamar um relatório do ireport. Eu utilizo o netbeans 7.2 e tenho os plugin do ireport instalados nele
e tenho também a biblioteca jaspersoft já copiado no java.

Esse é a classe

package relatorio;

import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import utilitarios.conexao;


public class relatorio {

    
    conexao con = new conexao();


public relatorio() //método construtor
{
  try 
  {
      con.conecta();
      con.executeSQL("SELECT * from cliente");
      JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
      JasperPrint jasperPrint;
        jasperPrint = JasperFillManager.fillReport(
         "src/relatorio/cliente.jasper", new HashMap(), jrRS);
      JasperViewer.viewReport(jasperPrint,false); //false para nao fechar o form
  } catch (Exception erro){
             JOptionPane.showMessageDialog(null,erro);
   }
}

  public static void main (String args[]) 
  {
    new relatorio(); 
  }
}
porém quando eu executo volta esse erro
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/runtime/callsite/CallSiteArray
	at null_1356341984500_964669.$createCallSiteArray(calculator_null_1356341984500_964669)
	at null_1356341984500_964669.$getCallSiteArray(calculator_null_1356341984500_964669)
	at null_1356341984500_964669.<init>(calculator_null_1356341984500_964669)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
	at java.lang.Class.newInstance0(Class.java:372)
	at java.lang.Class.newInstance(Class.java:325)
	at net.sf.jasperreports.engine.design.JRAbstractJavaCompiler.loadEvaluator(JRAbstractJavaCompiler.java:98)
	at net.sf.jasperreports.engine.design.JRAbstractCompiler.loadEvaluator(JRAbstractCompiler.java:320)
	at net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:240)
	at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:421)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:428)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:76)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:86)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:56)
	at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
	at relatorio.relatorio.<init>(relatorio.java:26)
	at relatorio.relatorio.main(relatorio.java:36)
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.callsite.CallSiteArray
	at java.lang.ClassLoader.findClass(ClassLoader.java:522)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
	... 23 more
Java Result: 1
nisso eu percebi que se eu alterar essa linha
"src/relatorio/cliente.jasper", new HashMap(), jrRS);
para
"../src/relatorio/cliente.jasper", new HashMap(), jrRS);
me volta esse erro
net.sf.jasperreports.engine.JRExcepion:java.io.FileNotFoundException:..\src\relatorio\cliente.jasper
e esse mesmo vem da qui
catch (Exception erro){
             JOptionPane.showMessageDialog(null,erro);

alguém me ajuda .

3 Respostas

orlandocn

O primeiro erro acontece pq seu relatorio ou algum sub relatório esta usando groovy e as bibliotecas não estão no classpath.

o segundo erro acontece pq vc está indicando o caminho errado do relatório.

R

exatamente como o amigo acima disse, o erro esta sendo gerado pq vc esta compilando seu “.jasper” como groovy. A solução ou e adicionar as bibliotecas do groovy, ou entao vc compila seu relatorio para java.

T

Valeu pessoal pela ajuda consegui fazer deu certo .

Criado 24 de dezembro de 2012
Ultima resposta 26 de dez. de 2012
Respostas 3
Participantes 3