Problema com Ireport

Fala gente boa!
Estou com um problema nesse código. Quando eu crio o relatório e não tem dado nenhum no banco ele
diz que o relatório não contém páginas e aparece normalmente em branco. Mas quando o banco tem algum dado( nesse caso o vetor), ele dá essa exceção:

[code]okException in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: org/apache/commons/beanutils/PropertyUtils
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:104)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:93)
at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:104)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:799)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:763)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1078)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:107)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:751)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:679)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:517)
at menuPrincipal.ControleJPrincipal.actionPerformed(ControleJPrincipal.java:36)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

meu classpath: além do jre1.6
postgresql-8.1-404.jdbc3.jar
jasperreports-1.3.1.jar
commons-logging-1.0.2.jar
commons-collections-2.1.jar
ireport.jar

o arquivo relatorioAlunos.jasper esta na package menuPrincipal.

Meu código:
package menuPrincipal;

import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
import java.util.Vector;
import aluno.*;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JasperPrint;
public class ControleJPrincipal extends AbstractAction {

private static final long serialVersionUID = 1L;

public void actionPerformed(ActionEvent e) {
	String command = e.getActionCommand();
	if(command.equals("mAluno")){
		new Faluno();
	}//fim do if mAluno
	
	else if(command.equals("mRAluno")){
		try{
			System.out.print("ok");
			ControleAluno controleAluno = new ControleAluno(); 
			Vector vetorAluno =  controleAluno.dadosEmVetor();
			
		//classe que define o tipo de dado do relatório
			JRBeanCollectionDataSource jrbean = new JRBeanCollectionDataSource(vetorAluno); 
						Map map = new HashMap();
		//comando para criar relatórios
			JasperPrint impressao = JasperFillManager.fillReport("relatorioAlunos.jasper", map, jrbean);
		//comando para mostrar o relatório
			JasperViewer.viewReport(impressao, false);
			
		}//fim do try
		catch (JRException ex){
			JOptionPane.showMessageDialog(null,"Erro ao tentar abrir o relatório\n"+ex.getStackTrace(),"Erro",JOptionPane.ERROR_MESSAGE);
		}//fim do catch
	}//fim do if mRaluno
	
}//fim do actionPerformed

}//fim da classe

Estou usando o postgresql e fazendo no eclipse.
No Ireport o relatório aparece normalmente sem os dados, não sei se era para aparecer no IReport já com os dados? Mas lá aparece em branco quando compila mesmo com dados no banco. Pelo menos aparece, no eclipse dá essa exceção.
Qualquer ajuda, fico grato!
Valeu gente!

Amigo,

A princípio esta faltando o jar: commons-beanutils-xxx.jar.

Tenta pegar ele no lib do iReport e colocar no classpath.

Abraços.

Muito Grato meu irmão!!!
Po, quebro mo galhão : ) !!
Era isso mesmo!!
Valeu mesmo!!
D+++

Sabe onde posso encontrar a documentação ( classe e interfaces) do IReport?

Que bom que deu certo!!! :slight_smile:

Sobre este tipo de documentação que você falou (Classes e Interfaces) eu uso é API em:

http://jasperreports.sourceforge.net/api/index.html

Esta API é do JasperReport. Você irá utilizá-la muito quando estiver gerando seus relatórios a partir de classes Java.

Abraços!

Grato meu irmão :smiley:

Prezados, Descobri agora que meu programa não está salvando arquivo, PDF por exemplo.
Alguém tem uma sugestão sobre o que pode ser. O código continua o mesmo.
Agradeço qualquer sugestão.

Olá

Não vi no código postado no primeiro post onde grava o arquivo. Você apenas manda exibir no JasperViewer

Resolvido galera!
Obrigado pela disposição de todos (todos dois : ) )rsrsr

furutani: Não saquei o que você disse. Se estiver falando do arquivo .jrprint, no meu caso eu não preciso colocar ele não.

Erro foi corrigido colocando a path: itext-1.3.1.jar no classpath.

Nossa a grande maioria dos erros de jasperReport é classpath, valeu gente boa. Att!

Boa tarde amigo, estou com um problema ao compilar este código java:
package com.escola;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
public class RelAlunos extends HttpServlet {

public static Connection con;
public static String banco = “xxxx”; // Nome do banco de dados
public static String usuario = “root”; // Usuario do banco
public static String senha = “xxxx”; // Senha
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
conexao(); // Faz a conexão
// Na variavel pathJasper ficara o caminho do diretório para
// os relatórios compilados (.jasper)
String pathJasper = getServletContext().getRealPath(
“/WEB-INF/classes/com/escola”)

  • “/”;
    // A variavel path armazena o caminho real para o contexto
    // isso é util pois o seu web container pode estar instalado em lugares diferentes
    String path = getServletContext().getRealPath("/");

// Parametros do relatorio
Map parametros = new HashMap();
// O único parametro que devemos passar é o PathRelAutores
// é o caminho pro RelAutores.jasper (que foi subtituido pelo
// valor fixo ?D:/iReport-0.4.0/RelAutores.jasper?)
parametros.put(“PathAlunos”, pathJasper + “Alunos.jasper”);
try {
// Aqui ele cria o relatório
JasperPrint impressao = JasperFillManager.fillReport(pathJasper

  • “Aluno.jasper”, parametros, con);
    // Grava o relatório em disco em pdf
    JasperManager.printReportToPdfFile(impressao, path
  • “/Aluno.pdf”);
    // Redireciona para o pdf gerado
    res.sendRedirect(“Aluno.pdf”);
    } catch (Exception e) {
    res.getWriter().println("Erro ao gerar o relatório: " + e);
    }

}

// Cria a conexão
public void conexao() {
try {
if (con == null || con.isClosed()) {
Class.forName(“com.mysql.jdbc.Driver”);
con = DriverManager.getConnection(
“jdbc:mysql://127.0.0.1:8080/” + banco, usuario, senha);
}
} catch (Exception e) {
System.out.println(“não foi possível conectar ao banco ->”);
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
doPost(arg0, arg1);
}
}
ele dá o seguinte erro:
package net.sf.jasperreports.engine does not exist
package net.sf.jasperreports.engine does not exist
package net.sf.jasperreports.engine does not exist
cannot find symbol class JasperPrint
cannot find symbol variable JasperFillManager
cannot find symbol variable JasperManager
o que eu faço?
um forte abraço!!!