Relatório JasperRepot x IReport, ERRO!

5 respostas
arm.jr

Criei um relatório no iReport e quando vou compilar esse codigo. esta dando erro (em vermelho).

Alguem pode me ajudar!


package JaperReport;

import java.util.HashMap;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.DriverManager;

import java.sql.Statement;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.view.JasperViewer;
public class Relatorio1 {

private Connection con = null;

String driver = com.mysql.jdbc.Driver;

String url = jdbc:mysql://localhost:3306/upis”;

String user = root;

String password = 12345678;

private ResultSet rs = null;
private String valores[] = new String[8];

public Relatorio1() {

try {

if (con == null) {

Class.forName(driver);

con = DriverManager.getConnection(url, user, password);

Statement statement = con.createStatement();

rs = statement.executeQuery(SELECT * FROM teste);

int i=1;

while(rs.next())

{

valores[i] = rs.getString(i);

i++;

}
}

}

catch (Exception e)

{}

try {

String array[] = valores;

JasperDesign design = JasperManager.loadXmlDesign(C:\Upis.jrxml);

JasperReport jr = JasperManager.compileReport(design);

HashMap parameters = new HashMap();
parameters.put(“nome”,array[1]);

JasperPrint impressao = JasperManager.fillReport(jr,parameters,con);

JasperViewer jrviewer = new JasperViewer(impressao,false);

jrviewer.show();

jrviewer.setDefaultCloseOperation(jrviewer.DISPOSE_ON_CLOSE);
}

catch (Exception e)

{System.out.print(e.getMessage());}

}

public static void main (String args[])
{
new Relatorio1();
}
}

[color=red]ERRO

Exception in thread main java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

at net.sf.jasperreports.engine.JasperManager.loadXmlDesign(JasperManager.java:971)

at JaperReport.Relatorio1.<init>(Relatorio1.java:44)

at JaperReport.Relatorio1.main(Relatorio1.java:62)

-----------------------------------------------------------------[/color]

Alguem pode me ajudar!!?

5 Respostas

ramilani12

arm.jr:
Criei um relatório no iReport e quando vou compilar esse codigo. esta dando erro (em vermelho).

Alguem pode me ajudar!


package JaperReport;

import java.util.HashMap;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.DriverManager;

import java.sql.Statement;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.view.JasperViewer;
public class Relatorio1 {

private Connection con = null;

String driver = com.mysql.jdbc.Driver;

String url = jdbc:mysql://localhost:3306/upis”;

String user = root;

String password = 12345678;

private ResultSet rs = null;
private String valores[] = new String[8];

public Relatorio1() {

try {

if (con == null) {

Class.forName(driver);

con = DriverManager.getConnection(url, user, password);

Statement statement = con.createStatement();

rs = statement.executeQuery(SELECT * FROM teste);

int i=1;

while(rs.next())

{

valores[i] = rs.getString(i);

i++;

}
}

}

catch (Exception e)

{}

try {

String array[] = valores;

JasperDesign design = JasperManager.loadXmlDesign(C:\Upis.jrxml);

JasperReport jr = JasperManager.compileReport(design);

HashMap parameters = new HashMap();
parameters.put(“nome”,array[1]);

JasperPrint impressao = JasperManager.fillReport(jr,parameters,con);

JasperViewer jrviewer = new JasperViewer(impressao,false);

jrviewer.show();

jrviewer.setDefaultCloseOperation(jrviewer.DISPOSE_ON_CLOSE);
}

catch (Exception e)

{System.out.print(e.getMessage());}

}

public static void main (String args[])
{
new Relatorio1();
}
}

[color=red]ERRO

Exception in thread main java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester

at net.sf.jasperreports.engine.JasperManager.loadXmlDesign(JasperManager.java:971)

at JaperReport.Relatorio1.<init>(Relatorio1.java:44)

at JaperReport.Relatorio1.main(Relatorio1.java:62)

-----------------------------------------------------------------[/color]

Alguem pode me ajudar!!?

Vc colocou no CLASSPATH o JAsperReports ?
Outra coloca seu código entre tag code

bonissauro

Tambem to quebrando a cabeca nisso… Acho que tem a ver com o fato de varias dessas classes estarem “deprecateds” (sei la como se traduz isso, mas significa “desatualizada”, pelo que entendi), nao descobri que classes as substituiram mas to chegando perto. Alias, se alguem souber e quiser me dar uma ajudinha, fico grato…

Bonissauro :?

brlima

Na verdade esse erro tá dizendo que não achou uma classe (Digester) do apacha.commons.
para utilizar o jasperreports vc precisar ter junto com ele várias outras libs ( jars ). Um deles é o parser de XML. Outro exemplo é se quiser exportar para excel, que é outro jar.
Se vc estiver usando o iReport, pode ir no diretorio LIB dele e pegar a maioria dos jars que tem lá.

Mas não tem nada de Deprecated ( depreciado = não é bom usar, pois parou a manutenção ). E isso não causa erro…

bonissauro

Olha, rapaz, eu to usando o NetBeans 5 com o Jasper que baixei faz 3 dias do sourceforge.

Nas linhas onde uso os metodos loadxmldesign da JasperDesign e a compileReport da JasperReport aparece a mensagem “tã-rã-rã-tã-rã-rã has been deprecated”. Não sou eu que tô dizendo, é o netbeans…

Será que tu não estás com uma versao desatualizada do Jasper ?

Sei lá, é uma possíbilidade, não?

Em tempo: busquei os JAR la no LIB do IREPORT e parou de dar o tal erro mesmo. O problema é que o código não faz nada. Me ignora, simplesmente.

Connection con = null; // c.criarConexao();
            
            if (con != null){
                try {
                    
                    JasperReport relatorio = JasperCompileManager.compileReport("c:\\teste.jrxml");
                    JasperPrint impressao = JasperFillManager.fillReport(relatorio, new HashMap(), con); 
                    JasperViewer view = new JasperViewer(impressao);
                    view.show();

No lugar do con=null poderia ser um datasource,
mas meu relatorio é so um teste e não tem nada ligado
a ele. Sao tres LABELs sem bancos de dados. Mas nada
é impresso.

Alguem tem alguma idéia?

Abraco a todos

brlima

O que eu falei foi da classe Digester e não do método loadXmlDesign. Realmente, a classe JasperDesign está depreciada, pois agora é utilizado uma classe especifica para carregar o XML. Use JRXmlLoader. Veja mais em http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/design/class-use/JasperDesign.html

Quanto a ter uma conexao “nula” somente para testes, utilize o JREmptyDataSource. Veja aqui.

Criado 1 de julho de 2005
Ultima resposta 11 de mai. de 2006
Respostas 5
Participantes 4