[RESOLVIDO] java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap

Então, pessoal.
Eu sou iniciante em java. Estou fazendo faculdade mas resolvi pular algumas etapas… :wink:
daí eu encontrei esse erro, quando tentei fazer a chamada de um relatório com o IReport 5.0.1.
Vou postar o código-fonte e o classpath do projeto.
Acho que o problema está no classpath, quero dizer, não devo ter adicionado todas as bibliotecas.
Agradeço desde já a todos que me ajudarem.

ERRO:

[quote]Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.(DefaultExtensionsRegistry.java:97)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:59)
at net.sf.jasperreports.extensions.ExtensionsEnvironment.createDefaultRegistry(ExtensionsEnvironment.java:81)
at net.sf.jasperreports.extensions.ExtensionsEnvironment.(ExtensionsEnvironment.java:69)
at net.sf.jasperreports.engine.util.JRStyledTextParser.(JRStyledTextParser.java:83)
at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:121)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:88 )
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:103)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:61)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:82)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:569)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:915)
at IReport.IReport.main(IReport.java:28 )
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.ReferenceMap
at java.net.URLClassLoader$1.run(Unknown Source)
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)
… 21 more
[/quote]
CÓDIGO:

[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
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 com.mysql.jdbc.PreparedStatement;

public class IReport {

public static void main(String[] args) {
	JRResultSetDataSource jrRS;
	String url = "jdbc:mysql://localhost:3306/grafica";
	ResultSet rst = null;
	Connection con = null;
	PreparedStatement stm;
	try {
		con = DriverManager.getConnection(url,"root","");
		stm = (PreparedStatement) con.prepareStatement("SELECT ped.id_pedido, ped.data, ped.hora, cli.*, (concat(cli.cidade_cli,' / ',cli.estado_cli)) AS cidadeEstado FROM pedido ped INNER JOIN clientes cli ON cli.idcliente = ped.id_cliente WHERE ped.id_pedido = 76");
		rst = stm.executeQuery();   
        jrRS = new JRResultSetDataSource(rst);
        JasperPrint jasperPrint = JasperFillManager.fillReport("/Users/Ândrei/Desktop/RACIONAL GRÁFICA/Eclipse - RG/InterfaceGrafica/relatorio/pedido.jasper", new HashMap<String, Object>(), jrRS);    
        JasperViewer jrviewer = new JasperViewer(jasperPrint, false);   
        jrviewer.setVisible(true);   
        jrviewer.toFront(); 
    } catch(Exception erro) {
    	erro.printStackTrace();
        JOptionPane.showMessageDialog(null,"Não foi possivel gerar relatório! "+erro);  
    }  
}  

}[/code]

CLASSPATH EM BRAILE:

:idea: Obs.: Não fui eu quem criou o relatório, foi um amigo meu. Eu ainda não tive experiência com o programa IReport, então, peço que expliquem detalhadamente a(s) causa(s) do erro.

adicione: commons-logging.jar ao projeto, normalmente fica no diretório de instalação do Ireport(C:\Arquivos de programas\Jaspersoft\iReport-5.0.1\ireport\modules\ext )

veja: http://www.guj.com.br/java/129604-ireport

1 curtida

está dando um erro falando que não encontrou uma classe em org/apache/commons/collections/

baixe a lib commins collections e adiciona nas bibliotecas do seu projeto:

http://commons.apache.org/collections/download_collections.cgi

Bom dia, caso tenha resolvido, não esqueça de “editar o primeiro post” e adicionar “RESOLVIDO”.

Abraços.

[quote=robinsonbsilva]Bom dia, caso tenha resolvido, não esqueça de “editar o primeiro post” e adicionar “RESOLVIDO”.

Abraços.[/quote]

Tudo bem, pode deixar que farei isso, mas ainda não tive tempo. Obrigado.

Obrigado maior_abandonado e robinsonbsilva. :smiley:

Realmente, estava faltando a importação do commons.jar; todos eles.

Vou postar aqui o código-fonte completo e os nomes de todos os jars que importei. Se alguém mais estiver tendo problemas com isso, conseguimos chegar em uma solução aqui.

IMPORTAR:
Se encontram no diretório: “C:\Program Files (x86)\Jaspersoft\iReport-5.0.1\ireport\modules\ext”

CÓDIGO:

[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
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 com.mysql.jdbc.PreparedStatement;

public class IReport {

static Connection con;

public static void main(String[] args) {
	JRResultSetDataSource jrRS;
	String url = "jdbc:mysql://localhost:3306/grafica";
	ResultSet rst = null;
	PreparedStatement stm;
	try {
                // Realiza a conexão com o banco de dados
	    con = DriverManager.getConnection(url,"root","");
                // Inicializa o HashMap
	    HashMap parameters = new HashMap&lt;String, Object&gt;();
	    parameters.put("parameter1", Integer.parseInt(JOptionPane.showInputDialog("Selecione o número do pedido:")));
	    jrRS = new JRResultSetDataSource(rst);
                // fillReport("PASTA ONDE SE ENCONTRA O .jasper",HashMap,Conexão com o banco)
                JasperPrint jasperPrint = JasperFillManager.fillReport("C:/Users/Ândrei/Desktop/relatorios/pedido/pedido.jasper", parameters, con);
                JasperViewer jrviewer = new JasperViewer(jasperPrint, true);   
                // Deixa a janela visível
                jrviewer.setVisible(true);
                // Trás a janela à frente das outras
                jrviewer.toFront();	  
    } catch(Exception erro) {
        JOptionPane.showMessageDialog(null,"Não foi possivel gerar relatório! "+erro);  
    }
}  

}
[/code]

TÓPICO FECHADO. :!: