Problemas com a geração de Relatórios no iReport

15 respostas
anderson3

Olá Pessoal, to utilizando o netbeans 6.8 e o iReport 4.0.2 para desenvolver um aplicativo, mas to com o seguinte problema…
Quando compilo no netbeans o arquivo responsável por chamar o relatório, ele abre normalmente, mas quando gero o executável do sistema e clico no botão para chamar o mesmo relatório, aparece a seguinte mensagem de erro:

-> net.sf.jasperreports.engine.jrexception java.io.filenotfoundexception

O que pode ser isso?? Me ajudem por favor!!

Valeu pessoal…

15 Respostas

Lindberg

ta faltando o JarperReportXX.jar no classpath, ou adicionar nas bibliotecas do netbeans
ou outro arquivoXXX.jar.

Polverini

posta o stacktarce completo, pois pode ser que o sistema não esteja encontrando o arquivo .jasper

anderson3

O arquivo que eu to utilizando pra chamar o relatório é esse…

package relatorios;

import java.util.HashMap;

import javax.swing.JOptionPane;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import net.sf.jasperreports.engine.JasperCompileManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.view.JasperViewer;

import utilitarios.conexao;

public class relatorio_produto{

conexao con = new conexao();

public relatorio_produto(){

    try {
        con.conecta();
        con.executaSQL("select * from produtos");
        JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
        JasperPrint jasperPrint = JasperFillManager.fillReport("relatorios/relatorio_produto.jasper", new HashMap(), jrRS);
        JasperViewer.viewReport(jasperPrint);

    } catch (Exception erro) {
        JOptionPane.showMessageDialog(null, "Deu o erro:" + erro);
    }

}

public static void main(String args[]){

    new relatorio_produto();
}

}

Lindberg

olha os [color=red]import[/color] do teu codigo …
no momento estou utilizando este:

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.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JasperPrintManager;


public class abrerelatorio {

public static java.sql.Connection conex;
public String titulos[] = new String[10];

public opencarrego(java.sql.Connection cong, String titulog[], String pedg) { 

	  	conex = cong;
	  	titulos = titulog;	

		String fantasiaw = titulos[0];
		String docw = pedg;



        try {


		   	String rootDir = "pasta_relatorios/";  

   			java.util.Map parameters = new HashMap();
   			parameters.put("Emp", ""+fantasiaw+""); 
   			parameters.put("dados", ""+docw+""); 

//----------------- se for utilizar sub relatorios ----------------------------------
/*   			String subreportFile1 = rootDir+"subrel1.jasper";
   			String subreportFile2 = rootDir+"subrel2.jasper";

   			parameters.put("SUBREPORT_DIR1", ""+subreportFile1.toString()+""  ) ; 
   			parameters.put("SUBREPORT_DIR2", ""+subreportFile2.toString()+""  ) ; 
   			parameters.put("REPORT_CONNECTION", conex ) ;       */
//------------------------------ sub relatorios ---------------------------------------

   			String reportFilename = rootDir+"nomedorelatorio.jasper";
        

			JasperPrint jasperPrint = JasperFillManager.fillReport(reportFilename, parameters, conex); 
 			JasperViewer.viewReport(jasperPrint, false); 


	    } catch (Exception e) {
         		System.out.println("Ocorreu um erro: " + e.toString() );
         		e.printStackTrace();
      	}

     }    

}


---------------- com consulta sql ---------------- troca este trecho ----------------
Statement statement = conex.createStatement();
rs = statement.executeQuery(selectw);  //"Select  * from esprodutos"
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
JasperPrint jasperPrint = JasperFillManager.fillReport(relatw, parameters, jrRS);  
JasperViewer.viewReport(jasperPrint, false);
anderson3

Ainda não consegui resolver o problema…

anderson3

Vou conferir os importes!!

anderson3

Já conferi os importes, continua dando a mesma mensagem de erro…

Lindberg

verifica o classpath … acredito que esteja faltando algum arquivo jar
coloca pra gente olhar como vc ta criando o jar, quais arquivos jar estao na pasta …

Exemplo:
------------- criando arquivo manifest.txt --------------
Main-Class: minhaaplicacao
Name: minhaaplicacao.class
Java-Bean: True
Class-path: mysql-connector-java-5.1.12-bin.jar jasperreports-1.2.0.jar commons-pool-1.5.4.jar commons-dbcp-1.4.jar commons-collections-3.2.1.jar commons-digester-1.7.jar itext-1.3.1.jar jdt-compiler.jar commons-logging-1.0.2.jar commons-logging-api-1.0.2.jar commons-beanutils-1.5.jar cglib-2.1.jar servlet-api.jar

------------- criando arquivo criajar.bat ----------------------
del *.class
echo Compilando
javac minhaaplicacao.java
del aplicacao.jar
jar -cvfm aplicacao.jar manifest.txt *.class

para estes comando funcionar o [color=red]ambiente do so[/color] deve estar configurado …

anderson3

Como eu sou iniciante no java, to com dificuldade em conferir o Classpath, inclusive em encontrar ele aqui no pc…Assim que eu encontrar posto aqui…

Lindberg

estas dicas que ti passei funcionam[color=blue] sem IDE[/color], é voce quem deve configurar seu computador.
veja no link http://lindberg.zip.to, é onde guardo minhas anotações, ainda vou arrumar ta feio …

anderson3

Na minha variável de sistema Classpath tem o seguinte texto->".;%JAVA_HOME%"

anderson3

No meu caso aqui as variáveis de ambiente tem o seguinte conteúdo:

Path=%PATH%;%JAVA_HOME%\bin

JAVA_HOME=C:\Arquivos de programas\Java\jdk1.6.0_18

CLASSPATH=.;%JAVA_HOME%

anderson3

Me ajudem aí pessoal, to precisando muito desse aplicativo funcionando…E como sou iniciante em java to tendo dificuldade!! Valeu…

Lindberg

veja no link http://lindberg.zip.to, é onde guardo minhas anotações, ainda vou arrumar ta feio …

voce pode copiar todos jar necessario na mesma pasta onde estar seu arquivo.jar

exemplo:
iText-2.1.7.jar
jasperreports-4.1.1.jar
commons-beanutils-1.8.2.jar
commons-logging-1.1.jar
commons-collections-3.2.1.jar
commons-digester-1.7.jar
groovy-all-1.7.5.jar

ViniciusLM

Se quando vc compila funciona e quando gera o .jar nao funciona entao ele nao esta encontrando o arquivo.
JasperPrint jasperPrint = JasperFillManager.fillReport(“relatorios/relatorio_produto.jasper”, new HashMap(), jrRS);
passa o caminho completo de onde esta o relatorio ex: /home/relatorios/relatorio_produto.jasper
ou c:/relatorios/relatorio_produto.jasper

Criado 14 de agosto de 2011
Ultima resposta 15 de ago. de 2011
Respostas 15
Participantes 4