Arquivo .jar do meu projeto no netbeans não chama relatórios do iReports (RESOLVIDO)

15 respostas
jallisson_jallis

O que fazer para resolver esse problema, na hora de executar pelo netbeans o relatório abri normal agora quando executo pelo .jar não abre nada

Segue abaixo o codigo que uso para o relatório abrir no netbeans

package relatorio;

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 relatClientes {

    
    conexao con = new conexao();


public relatClientes() {
  try 
  {
      con.conecta();
      con.executeSQL("SELECT * from cliente");
      JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
      JasperPrint jasperPrint = JasperFillManager.fillReport(
      "dist/relClientes.jasper", new HashMap(), jrRS);
      JasperViewer.viewReport(jasperPrint);
  } catch (Exception erro){
             JOptionPane.showMessageDialog(null,"deu erro ="+erro);
   }
}

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

15 Respostas

orlandocn

troque

JasperPrint jasperPrint = JasperFillManager.fillReport("dist/relClientes.jasper", new HashMap(), jrRS);

por

JasperPrint jasperPrint = JasperFillManager.fillReport(getClass().getResourceAsStream("caminho_do_relatorio_dentro_do_jar.jasper"), new HashMap(), jrRS);
jallisson_jallis

Troquei conforme disse,mais agora nem o netbeans abre o relatório dando a mensagem de erro do catch.

abaixo o codigo trocado

JasperPrint jasperPrint = JasperFillManager.fillReport(getClass().getResourceAsStream("J:/CURSO JAVA SE I 1/EstoqueTci/dist/relClientes.jasper"), new HashMap(), jrRS);
orlandocn

posso estar enganado, mas “J:/CURSO JAVA SE I 1/EstoqueTci/dist/relClientes.jasper” me parece ser um caminho em seu disco rigido.

você deve indicar o caminho do arquivo DENTRO DO SEU JAR. por exemplo, se ele estiver na raiz, basta colocar “/relClientes.jasper”

capiche?

botocudo_killer

bem mais simples fazer desta forma…

cria um pacote ‘Relatorio’ no seu projeto e coloca ele dentro dele.

do que passar esse caminho todo… e tbm vc esta gerando o .jar como ele vai achar essa unidade " J:", na sua maquina sim !,mas e na maquina de outra pessoa…

jallisson_jallis

Vou detalhar:

Meu projeto está na unidade J: dentro da pasta CURSO JAVA SE I 1, o nome do projeto é EstoqueTci.

eu criei um pacote chamado relatório para ficar organizado.

o comando abaixo abre o relatório normal pelo netbeans

try 
  {
      con.conecta();
      con.executeSQL("SELECT * from cliente");
      JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
      JasperPrint jasperPrint = JasperFillManager.fillReport( 
      "relatorio/relClientes.jasper", new HashMap(), jrRS);    
    
      JasperViewer.viewReport(jasperPrint);
  }

mais não abre o relatório pelo executável .jar que vocês já sabem fica na pasta dist .

orlandocn

cara, nao importa onde fica o seu arquivo jar. Na maquina alvo ele provavelmente vai estar em um diretorio completamente diferente.

DENTRO DO SEU JAR (abra-o com o winzip/winrar para conferir o conteudo) existem varios arquivos, entre eles, espera-se que exista um arquivo “relClientes.jasper”

localize-o DENTRO do seu jar com um compactador qualquer e indique este caminho no seu codigo.

jallisson_jallis

Ok agora sim compreendi o seu entendimento, vou fazer o que diz e logo postarei o resultado.

jallisson_jallis

é orlandocn eu abri o meu arquivo .jar usando usando o winrar e ele tem o arquivo relClientes.class mais não tem nenhum arquivo .jasper o que pode estar acontecendo

orlandocn

vc usa o netbeans?

jallisson_jallis

Sim uso o Netbeans 5.5

orlandocn

coloque o arquivo do jasper no seu diretorio de fontes e dê um shift +F11

jallisson_jallis

Não entendi.

jallisson_jallis

RESOLVIDO

http://www.guj.com.br/java/204783-jar-nao-gera-relatorio-resolvido

jallisson_jallis

[size=18]coloquei todos jars dentro do projeto pelo próprio Netbeans Nome_do_Projeto>Botão Direito>Propriedades>Bibliotecas>Adicionar JAR/pasta e procure todas as suas libs que usa no iReport… [/size]

depois coloquei a pasta relatório com o .jasper dentro da pasta dist e funcionou.

jallisson_jallis
jallisson jallis:
O que fazer para resolver esse problema, na hora de executar pelo netbeans o relatório abri normal agora quando executo pelo .jar não abre nada

Segue abaixo o codigo que uso para o relatório abrir no netbeans

package relatorio;

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 relatClientes {

    
    conexao con = new conexao();


public relatClientes() {
  try 
  {
      con.conecta();
      con.executeSQL("SELECT * from cliente");
      JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
      JasperPrint jasperPrint = JasperFillManager.fillReport(
      "dist/relClientes.jasper", new HashMap(), jrRS);
      JasperViewer.viewReport(jasperPrint);
  } catch (Exception erro){
             JOptionPane.showMessageDialog(null,"deu erro ="+erro);
   }
}

  public static void main (String args[]) 
  {
    new relatClientes(); 
  }
}
Criado 17 de abril de 2012
Ultima resposta 28 de abr. de 2012
Respostas 15
Participantes 3