IReport - java.lang.NoClassDefFoundError [RESOLVIDO]

to com um erro no IReport aqui que to quebrando a cabeça ha um tempao, se alguem puder dar uma ajuda eu agradeço muito xD

é o seguinte:
tem um botão aqui que pega os dados de uma tabela e joga pro banco de dados, logo depois de jogar o banco de dados ele deveria usar o IReport pra montar um relatorio com esses dados
o código do botão q chama o relatorio:

// aqui ele ta preenchendo a tabela e joga tudo pro banco de dados




//aqui ele chama o relatorio
MostrarRelatorio relatorio = new MostrarRelatorio();
        try {
            relatorio.abreRelatorio();
        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }

aqui o código da classe MostrarRelatorio:

public class MostrarRelatorio  {    

    private Connection getConnection() {
        Connection con = null;
        try {            
            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/pdv";
            String user = "root";
            String password="";
            Class.forName(driver);
            con = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException cnf) {
            JOptionPane.showMessageDialog(null, "Erro ao se conectar");
        } catch (SQLException sqlex) {
            JOptionPane.showMessageDialog(null, "Erro ao se conectar");
        }
        return con;
    }

    public void abreRelatorio() throws JRException, Exception {
        Connection con = getConnection();
        Map parameters = new HashMap();
        //parameters.put(0, 3);


        String path = "Relatorios/NotaFiscal.jasper";
        File file = new File(path);
        file=file.getAbsoluteFile();
        String repStr2 = file.getPath();

        try {
            JasperFillManager.fillReportToFile(repStr2, null ,con);
            JasperPrint jasperPrint = JasperFillManager.fillReport(repStr2, parameters,con);
            JasperViewer viewer = new JasperViewer(jasperPrint,false);
            viewer.setVisible(true);
            
        } catch (JRException jex) {
            JOptionPane.showMessageDialog(null,"JasperException"+jex.getMessage());
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getStackTrace());
        }
    }
}

ta dando o erro java.lang.NoClassDefFoundError na linha 32,
é a primeira vez que to usando o IReport, então pode ser q seja uma coisa bem idiota ^^"

obrigado desde ja

Linha 32 =

JasperFillManager.fillReportToFile(repStr2, null ,con);

Cara está dando este erro pq além da API jasperreport.jar vc tem que adicionar algumas outras, a lista de APIs que eu acho necessária pra esse exemplo é :
jasperreport
commons-beanutils
commons-digester
commons-logging
groovy-all
iText
commons-collections
e o driver do banco em questão

[quote=yurifw]to com um erro no IReport aqui que to quebrando a cabeça ha um tempao, se alguem puder dar uma ajuda eu agradeço muito xD

é o seguinte:
tem um botão aqui que pega os dados de uma tabela e joga pro banco de dados, logo depois de jogar o banco de dados ele deveria usar o IReport pra montar um relatorio com esses dados
o código do botão q chama o relatorio:

// aqui ele ta preenchendo a tabela e joga tudo pro banco de dados




//aqui ele chama o relatorio
MostrarRelatorio relatorio = new MostrarRelatorio();
        try {
            relatorio.abreRelatorio();
        } catch (JRException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }

aqui o código da classe MostrarRelatorio:

public class MostrarRelatorio  {    

    private Connection getConnection() {
        Connection con = null;
        try {            
            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/pdv";
            String user = "root";
            String password="";
            Class.forName(driver);
            con = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException cnf) {
            JOptionPane.showMessageDialog(null, "Erro ao se conectar");
        } catch (SQLException sqlex) {
            JOptionPane.showMessageDialog(null, "Erro ao se conectar");
        }
        return con;
    }

    public void abreRelatorio() throws JRException, Exception {
        Connection con = getConnection();
        Map parameters = new HashMap();
        //parameters.put(0, 3);


        String path = "Relatorios/NotaFiscal.jasper";
        File file = new File(path);
        file=file.getAbsoluteFile();
        String repStr2 = file.getPath();

        try {
            JasperFillManager.fillReportToFile(repStr2, null ,con);
            JasperPrint jasperPrint = JasperFillManager.fillReport(repStr2, parameters,con);
            JasperViewer viewer = new JasperViewer(jasperPrint,false);
            viewer.setVisible(true);
            
        } catch (JRException jex) {
            JOptionPane.showMessageDialog(null,"JasperException"+jex.getMessage());
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getStackTrace());
        }
    }
}

ta dando o erro java.lang.NoClassDefFoundError na linha 32,
é a primeira vez que to usando o IReport, então pode ser q seja uma coisa bem idiota ^^"

obrigado desde ja[/quote]

Olá yurifw, já tive esse problema ao usar a biblioteca do jasperreports. Isso acontece por que o jasper usar algumas dependencias de outras bibliotecas. No caso você precisa adicionar as libs faltantes para poder sair desse erro de:

Uma dica é, cole o Stack inteiro! para que podemos lhe ajudar a detectar qual é a classe que esta faltando e de qual projeto.

Aqui vão algumas libs extras que o jasper usa:

Bom, se esse for um projeto que ainda esta pequeno sugiro a você que você reinicie usando o maven!

^^
-Elio

alem das do banco de dados (que ta td certo) eu to usando as seguintes bibliotecas:
jasperrepots-4.5.0.jar
jasperrepots-applet-4.5.0.jar
jasperrepots-fonts-4.5.0.jar
jasperrepots-javaflow-4.5.0.jar

se alguem pode me indicar onde baixo as bibliotecas faltando?
acho q sao as seguintes né?

commons-beanutils
commons-digester
commons-logging
groovy-all
iText
commons-collections

Elio, ja estou nesse projeto ha alguns dias, mas é o primeiro relatorio que to gerando, daria pra recomeçar o projeto sim, mas você pode me indicar um bom tutorial sobre esse maven pra eu dar uma olhada?

Vc pode estar baixando as libs no próprio site do jasper : http://jasperforge.org/, vc vai na opção JasperReport Libraries,
estes jar que vc está procurando estão na lib .tar.gz pra linux ou .zip pra windows.

Procura no google uma a uma que você encontra…

Cara, a melhor fonte de referencia que encontrei foi o proprio site do projeto: http://maven.apache.org/guides/getting-started/index.html

Caso você esteja usando o Netbeans é só iniciar um projeto Maven!

Sobre onde baixar as libs, caso queira continuar sem o maven, a maioria delas você encontra na propria apache (http://projects.apache.org/).


todas as libs estão na própria pasta de instalação do iReports. Em linux é na pasta ireport/modules/ext que está dentro da pasta raiz do iReports.

Isso somente se ele tiver usando o iReport, caso ele tenha baixado só o JasperReport Library não tem!

No windows é o mesmo path que o ADEMILTON citou para encontrar as libs no iReport!

C:\Program Files (x86)\Jaspersoft\iReport-[VERSION]\ireport\modules\ext

o erro todo é esse ai:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule at net.sf.jasperreports.components.ComponentsExtensionsRegistryFactory.<clinit>(ComponentsExtensionsRegistryFactory.java:99) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:157) at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:115) at net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:53) at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.instantiateRegistry(DefaultExtensionsRegistry.java:236) at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:213) at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:163) at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:133) at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:105) at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:83) at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121) at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77) at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:87) at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57) 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.fillReportToFile(JasperFillManager.java:199) at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:95) at utilidades.MostrarRelatorio.abreRelatorio(MostrarRelatorio.java:52) at viewer.FrmPirncipal.btoGerarNotaActionPerformed(FrmPirncipal.java:313) at viewer.FrmPirncipal.access$200(FrmPirncipal.java:36) at viewer.FrmPirncipal$3.actionPerformed(FrmPirncipal.java:172) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6505) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Rule at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 61 more

ja adicionei todas essas bibliotcas que vcs falaram, continua dando o mesmo erro =/

essas sao as minhas bibliotecas:

[quote=yurifw]o erro todo é esse ai:
ja adicionei todas essas bibliotcas que vcs falaram, continua dando o mesmo erro =/

essas sao as minhas bibliotecas:

[/quote]

Essas são todas as dependencias que o JasperReports necessita: Vide Imagem!

Uma dica é, baixe o iReport, vá em: Jaspersoft\iReport-[VERSION]\ireport\modules\ext

e copie todos os jars desta pasta para suas dependencias de bibliotecas na sua IDE.

E como ultima dica é baixar da própria jasper o UltimateGuide que esta disponivel em:

https://www.jaspersoft.com/sites/default/files/jasperreports_ultimate_guide_3_pdf_16206.pdf


vou fazer isso sim, vlw mesmo cara xD

se n funfar vou ver se desenrolo com o maven, vlw xD

[quote=yurifw]vou fazer isso sim, vlw mesmo cara xD

se n funfar vou ver se desenrolo com o maven, vlw xD[/quote]

Cara, na precisão pode vir recorrer ao GUJ novamente!

Consegui colocar as bibliotecas certas aki sim, muito obrigado a todo mundo ai xD

o que resolveu foi isso ai

eu estava usando o plug-in pro netbeans, ai baixei o IReport separado fui nesse diretório ai so pra pegar as bibliotecas, vlw ai xD

agora só ta dando um outro erro aki, o relatorio ta saindo meio esquisito, colocando cada coisa em pagina separada, mas isso eu acho q resolvo aki sozinho, qlqr coisa e volto aki pro forum, valeu ai pessoal