Relatorio jasperreports

OLA PESSOAL, NAO SEI SE ESTOU NO TOPICO CORRETO PARA ESSA PERGUNTA, SOU NOVATO EM JAVA E ESTOU COM UM POBLEMA:
ESTOU TENTANDO GERAR UM RELATORIO PELO JASPERREPORTS MAIS APARECE ESSE ERRO:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
        at net.sf.jasperreports.engine.JasperManager.loadXmlDesign(JasperManager.java:971)
        at Estudos.<init>(Estudos.java:60)
        at Estudos.main(Estudos.java:78)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Digester
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        ... 3 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

ESTOU USANDO NETBEANS 6.5, JA ADICIONEI NAS BIBLIOTECAS DO NETBEANS O .JAR DO JASPERREPORTS, MAIS NAO FUNCIONA…
MEU CODIGO:

[code]
import java.io.IOException;
import java.io.StringReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;

import javax.swing.text.BadLocationException;
import javax.swing.text.rtf.RTFEditorKit;

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.engine.JasperManager.loadXmlDesign;
import net.sf.jasperreports.view.JasperViewer;

/* Primeira parte */
public class Estudos {

private Connection con = null;
private String driver = “org.gjt.mm.mysql.Driver”;
private String endereco = “jdbc:mysql://localhost:3306/banco”;
private String user = “root”;
private String pass = “12356”;
private ResultSet rs = null;
private String valores[] = new String[10];
private int chamada = 1;
private String dir = “C:/Documents and Settings/pasta1”;
private StringReader stream;
/*Segunda parte */

public Estudos() {
/* Efetua a conexao a base de dados e coleta os valores da base de dados armazenando-os
em um array para ser futuramente utilizado /
try {
if (con == null) {
Class.forName(driver);
con = DriverManager.getConnection(endereco, user, pass);
Statement statement = con.createStatement();
rs = statement.executeQuery(“select * from produto”);
HashMap teste = new HashMap();
while(rs.next()) {
//for até o numero de campos da tabela
for (int i = 1; i < 10; i++) {
valores[i] = rs.getString(i);
}
}
}
}
catch (Exception e) {
System.err.println(“Problemas apresentados na operacao de conexao”);
e.printStackTrace();
}
/
Inicio do bloco que ira gerar nossos relatorios e 3ª parte /
try {
String array[] = valores;
JasperDesign design = JasperManager.loadXmlDesign(dir + “report1.jrxml”);
JasperReport jr = JasperManager.compileReport(design);
HashMap parameters = new HashMap();
parameters.put(“PARAMETRO_1”,array[1]);
parameters.put(“PARAMETRO_2”, array[2]);
parameters.put(“PARAMETRO_3”, array[5]);
parameters.put(“PARAMETRO_4”, array[4]);
parameters.put(“PARAMETRO_5”,array[9]);
JasperPrint impressao = JasperManager.fillReport(jr,parameters,con);
JasperViewer jrviewer = new JasperViewer(impressao,false);
jrviewer.show();
}
catch (Exception e) {
e.printStackTrace();
}
}
/
Aqui chamamos o construtor de nossa classe para exibirmos o relatorio e 4ª parte*/
public static void main (String args[]) {
new Estudos();
System.out.println(“ok”);
}
}

ME AJUDEM POR FAVOR, JA PESQUISEI MAIS NAO ENCONTREI A SOLUCAO.
OBRIGADO…

Qual versão do ireports vc esta utilizando, e parece que tem um erro na sua classe estudos na linha 60, vc fez os imports corretos no seu relatorio, nas diretivas de importação do relatório e nas propriedades do relatório?

Att

Falta adicionar a library commons-digester.jar do proprio Ireports

Att. Jonas

OLA
ADICIONEI O COMMONS-DIGESTER-2.0 E ME APRESENTOU O SEGUINTE ERRO:

init:
deps-jar:
Compiling 1 source file to C:\Documents and Settings\Patrick\Meus documentos\NetBeansProjects\Estudos\build\classes
Note: C:\Documents and Settings\Patrick\Meus documentos\NetBeansProjects\Estudos\src\Estudos.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Documents and Settings\Patrick\Meus documentos\NetBeansProjects\Estudos\src\Estudos.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
compile-single:
run-single:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
        at org.apache.commons.digester.Digester.<init>(Digester.java:340)
        at net.sf.jasperreports.engine.xml.JRXmlDigester.<init>(JRXmlDigester.java:62)
        at net.sf.jasperreports.engine.xml.JRXmlDigesterFactory.createDigester(JRXmlDigesterFactory.java:944)
        at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:202)
        at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:167)
        at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:151)
        at net.sf.jasperreports.engine.JasperManager.loadXmlDesign(JasperManager.java:971)
        at Estudos.<init>(Estudos.java:60)
        at Estudos.main(Estudos.java:78)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
        ... 9 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

Amigo, existe uma série de Jars do Ireport que devem ser incluidos no BuildPatch.

Vou informar abaixo.
Os …*jar é referente as versões.

jasperReports…*.jar
commons-beanutils…*jar
commons-collections…*jar
commons-digester…*jar
commons-javaflow…*jar
commons-logging…*jar
iText…*jar

Vc esta utilizando a versão 3.0.0? ou 3.5.2? ou 3.6.0? essas bibliotecas costumam ter algumas diferenças entre versões, fique atento a isso.

Att.

[quote=ManoJava]Vc esta utilizando a versão 3.0.0? ou 3.5.2? ou 3.6.0? essas bibliotecas costumam ter algumas diferenças entre versões, fique atento a isso.

Att.
[/quote]

Exato, por isso citei sem as versões…

No meu caso utilizo o 3.6.0

Entao, eu acho q nao estou usando as versoes incompativeis uma com as outras.
podia por favor me falar as versoes compativeis aih eu faço o download pra ver
se consigo.
Eu estou meio confuso com tantas versoes q ja baixei…
passa pra mim por favor o q eu tenho q baixar e as versoes.

Obrigado…

Amigo referente as versoes que vc instalou.

Os arquivos .Jar estão dentro do diretório do iReport …

Basta dar uma pesquisa que irá encontra-los com facilidade,

Depois basta importa-los em sua aplicação

Att. Jonas

Olá!
Blza, encontrei os .jars e funcionou certinho…

Agora estou com a seguinte duvida:
preciso para um valor por parametro do jasperreports para o ireport, nao estou conseguinto passar por parametro nem criar a consulta no ireport,
consultei alguns tutoriais mais nao consegui resolver.
obrigado

Para essa função ja tem vários tópicos a respeito amigo,

De uma olhadinha que vai encontrar fácil a solução…

Inclusive só uma observação, você quer passar informação do java para o relatório correto?

E não do jasperreports para ireport hehe

:evil:

Att. Jonas

Ola,
minha instalacao funcionou legal, valeu obrigado.
Agora estou tentando entender aki e minha duvida eh a seguinte:
Tenho aki meu codigo java, onde passo um valor integer

HashMap parametros = new HashMap();
      
      parametros.put("parametro", new Integer(Integer.parseInt(codproduto)));
      //JOptionPane.showMessageDialog(null, parametros);
      JasperPrint imp = JasperFillManager.fillReport(jr, parametros, con);


      JasperViewer jv = new JasperViewer(imp, true);

aki ta minha consulta no ireport:

select descricao from produto where codigoproduto=$P{parametro}

no ireport funciona legal, quando pesso pra executar ele pede o parametro eu passo e gera o relatorio.
Eu quero passa o codproduto para o ireport, nao sei o q esta errado.
Aparece a mensagem q o documento nao possui paginas.
Onde na verdade teria q me apresentar o produto.
Valeu, obrigado.

Caro amigo está passando a informação correta? codproduto ?? ou seria codigoproduto

Att. Jonas

Entao, ja testei das duas maneiras!
a coisa nao flui amigo!

Obrigado. Consegui resolver meu erro anterior.
Estou com um outro probleminha aki (ARRAY), tenho o seguinte:

ResultSet r = s.executeQuery("select * from produto");
    while (r.next()) {
        meuArray[i]=(r.getString("descricao"));
        i++;
    }

Preciso fazer alguma coisa desse tipo, mais desse jeito nao esta funcionando:

Map parametros = new HashMap();                
        for(i=0;i<=tam-1;i++){
        parametros.put("patrick", meuArray[i]);
        }

O que pode ser?

Se não postar o code erro fica complicado…

Att. Jonas

oi Jonas!
seguinte, nao aparece um erro, ele simplesmente nao apresenta nada no relatório.
Quando tiro o for e coloco um valor […] ele apresenta legal o relatório.
Acho q nao posso fazer um for na passagem de parametro, sei la, alguma coisa assim.
pesquisei no google, mais nao consegui encontrar alguma coisa parecida…
o que vc acha q pode ser?
valeu Jonas!

Ola!

public Estudos() {
      /* Efetua a conexao a base de dados e coleta os valores da base de dados armazenando-os
       em um array para ser futuramente utilizado */
      try {
         if (con == null) {
            Class.forName(driver);
            con = DriverManager.getConnection(endereco, user, pass);
            Statement statement = con.createStatement();
            rs = statement.executeQuery("select * from produto");
            HashMap teste = new HashMap();
            while(rs.next()) {
               //for até o numero de campos da tabela
               for (int i = 1; i < 18; i++) {
                  valores[i] = rs.getString(i);
               }
            }
         }
      }
      catch (Exception e) {
         System.err.println("Problemas apresentados na operacao de conexao");
         e.printStackTrace();
      }
      /* Inicio do bloco que ira gerar nossos relatorios e 3ª parte */
      try {
         String array[] = valores;
         JasperDesign design = JasperManager.loadXmlDesign("C:/Documents and Settings/Patrick/report4.jrxml");
         JasperReport jr = JasperManager.compileReport(design);
         HashMap parameters = new HashMap();
         parameters.put("codigoproduto",array[1]);
         //parameters.put("PARAMETRO_2", array[2]);
         //parameters.put("PARAMETRO_3", array[5]);
         //parameters.put("PARAMETRO_4", array[4]);
         //parameters.put("PARAMETRO_5",array[9]);
         JasperPrint impressao = JasperManager.fillReport(jr,parameters,con);
         JasperViewer jrviewer = new JasperViewer(impressao,false);
         jrviewer.show();
      }
      catch (Exception e) {
         e.printStackTrace();
      }
   }

nesse codigo nao aparece nenhum erro, quando gera o relatorio aparece a mensagem que o documento nao possui paginas!

Tenta utilizar ArrayList… nao sei se vai funcionar…

Aproveitando que vcs estão falando sobre o Ireport…será que vs saberiam uma solução para o meu tópico sobre variáveis no Ireport…

http://www.guj.com.br/posts/list/142580.java