Arquivo jar nÃo encontra .jasper do relatorio [resolvido]

Já gerei meu .jar , só que quando vou executá-lo, ele nao encontra o .jasper.
Sugestões?

Parece meio óbvio, mas você enviou os arquivos jasper junto com o jar do seu projeto?

Recentemente eu desenvolvi um sistema para o cliente utilizando o JasperReport, depois de criar os arquivos .jasper, criei um diretório chamado reports e coloquei os .jasper dentro desse diretório, de dentro do meu sistema eu carrego esses arquivos deste diretório, funciona 100%

[]´s

Parece meio óbvio, mas você enviou os arquivos jasper junto com o jar do seu projeto?

Recentemente eu desenvolvi um sistema para o cliente utilizando o JasperReport, depois de criar os arquivos .jasper, criei um diretório chamado reports e coloquei os .jasper dentro desse diretório, de dentro do meu sistema eu carrego esses arquivos deste diretório, funciona 100%

[]´s

No NetBeans, se compilar, o arquivo JAR é criado.
E os .JASPER estão em uma pasta do projeto com nome de Relatorio.

tem algo errado?

Para conseguir gerar o relatorio do seu jar você deve adicionar o caminho no class-path do seu manifest:

Manifest-Version: 1.0 Main-Class: interf.Interface Class-Path: lib/mysql-connector-java-5.0.7-bin.jar relatorio/nomedoRelatorio.jasper
flw []'s

No meu caso (pelo que me lembro) não precisei colocar nada no manifest, eu faço a chamada do relatório da seguinte forma:

Criei um método para fazer a chamada do nome do arquivo e os parâmetros para passar ao relatório:



    private void callReport(String reportName, Map parameters) {
        try {
            
            String jasperFile = "reports/" + reportName + ".jasper";

            // Exporta para PDF
            String pdfFile = "reports/cadConvenios.pdf";
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperFile, parameters);
            JasperExportManager.exportReportToPdfFile(jasperPrint, pdfFile);
            JasperViewer.viewReport(jasperPrint, false);


        } catch (JRException ex) {
            ex.printStackTrace();
        }
    }

Funciona assim, como o diretório reports está no mesmo diretório do meu jar ele busca “a partir” desse diretório.

[]´s

Funciona assim, como o diretório reports está no mesmo diretório do meu jar ele busca “a partir” desse diretório.

Mas precisa estar na mesma pasta que o .jar (pasta dist) ou na pasta do projeto (onde ficam as pastas build, nbproject, src) ??

Fica assim:

[MeuPrograma]
||programa.jar
||||[reports]
||||||relatorio1.jasper
||||||relatorio2.jasper

Ou seja, a estrutura acima é o que eu libero pro cliente, é exatamente como está criado no dist.

Veja bem, se você executa de dentro do NetBeans, os seus jasper devem estar no diretório [reports] (no meu caso) dentro da pasta do projeto, mas se você executar a partir do jar que está no dist, essa pasta [reports] deve estar dentro do diretório [dist], junto ao .jar

[]´s

Comigo fica assim,mas eu utilizo o eclipse:

Tenho tbm uma variavel (path) que informa o caminho do relatorio…porem quando eu
executo o programa fora do eclipse (pelo meu jar)
não declarando no manifest meu programa não consegue gerar relatorio…

Meu jar principal foi gerado na pasta Atendimento Prodemge por isso tenho que fazer

 Class-Path: relatorio/nomedoRelatorio.jasper 

Mas se estivesse na mesma pasta do relatorio seria:

 Class-Path: nomedoRelatorio.jasper 

Esta ai a chamada:

private String path= "C:\\Arquivos de programas\\Atendimento Prodemge\\relatorio\\";

public void relatorioSobreaviso(final GregorianCalendar data1, final GregorianCalendar data2) {
		
   try {   
	 HashMap parameters = new HashMap();   
	 parameters.put("data1",data1.getTime());   
	 parameters.put("data2",data2.getTime());  
	 JasperPrint impressao = JasperManager.fillReport(path+"relSobreaviso.jasper",parameters,contBanco.con);
         JasperViewer jrviewer = new JasperViewer(impressao,false);   
         jrviewer.show();  
	}   
     catch (Exception e) {   
	 JOptionPane.showMessageDialog(null,e.getMessage(),"Atendimento Prodemge",JOptionPane.ERROR_MESSAGE);
      }   
	              
	         
		
	}

flw galera!!

\o/\o/
valeu ai jmozer …
eu fiz como vc falou e deu certo

muito obrigado!

só mais uma pergunta:

e se o jasper nao estive instalado na maquina do cliente por exemplo?

Você tem que incluir as bibliotecas necessárias para ele rodar, são alguns arquivos jar do diretório bin (se não me engano) da instalação do seu jasper.

Nos meus projetos que utilizo essa tecnologia de relatórios eu incluí:

commons-beanutils-1.7.jar
commons-collections-2.1.jar
commons-digester-1.7.jar
commons-loggin-1.0.2.jar
commons-loggin-api-1.0.2.jar
iReport.jar
itext-1.3.1.jar
jasperreports-2.0.2.jar

Eu acho até que nem todos esses arquivos são necessários, mas como estava com pressa pra entregar não fiquei testando quais realmente eram necessários e acabei enviado “provisoriamente” esses mesmos, mas acredito que dá pra retirar algum(s) deles… se alguém aqui do fórum tiver certeza de quais exatamente são necessários por favor poste aqui.

Valeu!!!

[]´s

Já consegui, mesmo sem ter instalado o JasperReports no computador do cliente, ele é aberto.
Apenas coloquei a pasta onde estava o relatorio dentro da pasta /dist, e depois foi só executar e
entregar minha aplicação pronta.

Obrigado a todos que me ajudaram ou aos que tentaram me ajudar.

Valeu mesmo.
:D:D