JasperReports e iReports (AINDA NÃO SOLUCIONADO)

Toda a vez que chamo o meu .jasper acontece o seguinte erro:

erro: Class not found when loading object from file : C:\Documents and Settings\SSBBLL\My Documents\AutoSystem\src\modelo\conexao\historico_estoque.jasper

Eu segui o tutorial aqui do site e até peguei alguns exemplos por ae, mas meu código não funciona de jeito nenhum. Alguém poderia me ajudar com isso?

Estou utilizando o JasperReports 1.2.7 c/ o iReport 1.2.7

O meu código é assim:

package modelo.conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

public class GerarRelatorio {
    Connection conexao = null;
    
    public GerarRelatorio() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conexao = DriverManager.getConnection("jdbc:mysql://localhost/autosystem","root","root");
        } catch (Exception e) {
            e. printStackTrace();
        }
    }
        
    public void gerarRelatorioHistoricoEstoque() throws Exception, JRException {
       PreparedStatement stmt = null;
       ResultSet rs = null;
       //String caminhoRelatorioJasper = "F:\\AutoSystem\\src\\modelo\\conexao\\historico_estoque.jasper";
       String caminhoRelatorioJasper = "C:\\Documents and Settings\\SSBBLL\\My Documents\\AutoSystem\\src\\modelo\\conexao\\historico_estoque.jasper";
       
       try{
           stmt = conexao.prepareStatement( "select cast(h.cd_peca as char) cd_peca, " +
                                                   "p.ds_peca, " +
                                                   "if(h.cd_tipo_transacao = 1, 'Entrada', " +
                                                     "( if(h.cd_tipo_transacao = 2, 'Saida',NULL) ) " +
                                                     ") tipo_transacao, " +
                                                   "cast(h.qt_transacao as char) qt_transacao, " +
                                                   "cast(h.qt_estoque_antes_transacao as char) qt_estoque_antes_transacao, " +
                                                   "cast(if(h.cd_tipo_transacao = 1, h.qt_estoque_antes_transacao + h.qt_transacao, " +
                                                         "( if(h.cd_tipo_transacao = 2, h.qt_estoque_antes_transacao - h.qt_transacao,NULL) ) " +
                                                       ") as char )  qt_estoque_depois_transacao " +
                                              "from peca p, historico_estoque h " +
                                             "where h.cd_peca = p.cd_peca" );                      
           
           rs = stmt.executeQuery();
           
           JRResultSetDataSource ds = new JRResultSetDataSource(rs);
            
           Map parametros = new HashMap();
           
           try{
               JasperPrint impressao = JasperFillManager.fillReport( caminhoRelatorioJasper,parametros,ds);
               
               JasperViewer viewer = new JasperViewer(impressao, true);
               
           }
           
           catch (JRException e){
               System.out.println("erro: " + e.getMessage());
               e.printStackTrace();
           
           }
           
       }
       catch(Exception e) {
           e.printStackTrace();       
       }
       
        
    }

}

Esse not found é que mata. Ja trabalhei e apanhei muito com Jaspers.
Bom vc compilou seu .jasper e colocou-o na estrutura de diretórios certa ?

Boa sorte amigo.

[quote=fsfnit]Esse not found é que mata. Ja trabalhei e apanhei muito com Jaspers.
Bom vc compilou seu .jasper e colocou-o na estrutura de diretórios certa ?

Boa sorte amigo.[/quote]

Eu joguei o .jasper no mesmo diretório da classe que o chama. Não encontrou então eu coloquei o caminho inteiro “C:…” e também não deu certo… :frowning:

[quote=fsfnit]Esse not found é que mata. Ja trabalhei e apanhei muito com Jaspers.
Bom vc compilou seu .jasper e colocou-o na estrutura de diretórios certa ?

Boa sorte amigo.[/quote]

Agora está dando está mensagem:

erro: Class not found when loading object from InputStream
java.lang.ClassNotFoundException: org.apache.commons.collections.SequencedHashMap
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

Eu alterei isso:

JasperPrint impressao = JasperFillManager.fillReport( caminhoRelatorioJasper,parametros,ds);

pra isso:

JasperPrint impressao = JasperFillManager.fillReport( getClass().getResourceAsStream(caminhoRelatorioJasper) ,parametros,ds);

e deixei apenas o nome do arquivo em caminhoRelatorioJasper

Como assim estrutura de diretório? Tem como me explicar melhor isso? Tô meio perdido e preciso gerar os relatórios urgetemente

[[]]'s

O erro gerado é este:

erro: Class not found when loading object from InputStream
 java.lang.ClassNotFoundException: org.apache.commons.collections.SequencedHashMap
         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

Para resolver este problema adicione o commons-collections-xxx.jar ao seu CLASSPATH e problema resolvido.

Você pode baixar o commons-collections em:
http://jakarta.apache.org/site/downloads/downloads_commons-collections.cgi

Espero ter ajudado.

[quote=RicardoLuis]O erro gerado é este:

erro: Class not found when loading object from InputStream
 java.lang.ClassNotFoundException: org.apache.commons.collections.SequencedHashMap
         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

Para resolver este problema adicione o commons-collections-xxx.jar ao seu CLASSPATH e problema resolvido.

Você pode baixar o commons-collections em:
http://jakarta.apache.org/site/downloads/downloads_commons-collections.cgi

Espero ter ajudado.[/quote]

Eu estou conseguindo rodar agora, só que ainda ta dando um pau. Ele não reconhece o campo quando existe comandos de manipulação dele, no caso o if que estou usando pra dependendo do valor retornar uma coisa ou outra… eu não consigo fazer essa transformação direto no iReport?

É possível você utilizar o comando if no iReport sim, de uma olhada nestes links, eles poderão te ajudar:

http://www.guj.com.br/posts/list/41732.java
http://www.guj.com.br/posts/list/41682.java
http://www.guj.com.br/posts/list/41626.java

Espero ter ajudado…