Relatório não abre no Jar

20 respostas
Jrmanzini
Pessoal, pesquisei e li todos os tópicos , mas não consigo fazer funcionar..... No netbeans funciona perfeitamente, mas quando gero o jar só nao funciona os relatórios Essa é minha Classe:
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.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import utilitários.conexao;

public class RelatNotas{
    conexao con = new conexao();

    public RelatNotas(){
        try{
            con.conecta();
            con.executeSQL("SELECT * from notas");
            JRResultSetDataSource jrRS =new JRResultSetDataSource(con.resultset);
            JasperPrint jasperPrint = JasperFillManager.fillReport("relatório/RelatNotas2.jasper", new HashMap() , jrRS);
            JasperViewer.viewReport(jasperPrint);

        }catch(Exception erro){
            JOptionPane.showMessageDialog(null,"deu erro"+ erro);

        }
    }
public static void main(String args[]){
    new RelatNotas();
}
    }
E esse é o erro ao chamar o relatório: [img]http://img264.imageshack.us/img264/5826/errojasper2.jpg[/img] ja descompactei o jar e vi que os relatórios estão contidos......... O que esta errado?

20 Respostas

B

Ola,

Dentro do jar, onde fica o arquivo: relatório/RelatNotas2.jasper???

Jrmanzini

dentro do jar tem a pasta relatorios e dentro dela a classe…RelatNotas

L

Cara não sei se é o caso, mas geralmente para ler arquivos de dentro de um jar, tem que se usar Class.class.getResource(""). Dá um aolhada a cerca disto, talvez pode ser.

B

bom, então vamos tentar assim, troque a linha:

JasperPrint jasperPrint = JasperFillManager.fillReport("relatório/RelatNotas2.jasper", new HashMap() , jrRS);

Por:

JasperPrint jasperPrint = JasperFillManager.fillReport(JasperFillManager.class.getResourceAsStream("/relatorio/RelatNotas2.jasper"), new HashMap() , jrRS);
Jrmanzini

ao colocar essa linha da o erro null pointerException…

B

Bom, vc podia verificar se:
1-> o arquivo esta dentro do path que eu coloquei, isto é, verificar se o diretório que tem dentro do jar condiz com o nome que eu coloquei.
2->Verificar se o nome do arquivo é este mesmo…

Ps.: verifique o nome mesmo… e evite usar acentos, cedilha e outros caracteres especiais nestes nomes… as veses o S.O pode não interpretar legal… já aconteceu comigo …

Jrmanzini

quando eu descompactei o jar tem uma pasta chamada relatorio e dentro dela um arquivo.class chamdo RelatNotas…mais nada

B

Mas e o arquivo RelatNotas2.jasper? tá lá não???

Acho que vc tme que dar uma olhada no cara que gera este jar… se vc rodar pelo netbeans funciona legal?

Jrmanzini

No netbeans ta perfeito, então bruno só tem a classe relat notas, quando eu gero o jar ele nao coloca o arquivo jasper junto…como faço para empacotar junto?

D

prestem atenção no erro: java.lang.NoClassDefFoundError
algum jar do jasper não esta no classpath quando voce executa pelo prompt, no netbeans funciona porque esta tudo configurado.

B

Pô, vc tá usando o netbeans para gerar o jar ou tá fazendo via ant??? ou na mao mesmo?

Jrmanzini

to usando o netbeans pra gerar o jar

B

dlf:
prestem atenção no erro: java.lang.NoClassDefFoundError
algum jar do jasper não esta no classpath quando voce executa pelo prompt, no netbeans funciona porque esta tudo configurado.

Jrmanzini:

ao colocar essa linha da o erro null pointerException…

Jrmanzini

como eu coloco o jar no classpath?

B

O outro tava mei perdido…

BOm vamos lá, seguinte, coloque ai como está a estrutura do seu projeto… posta ai pra gente…

Mas de antemão foi falando :), o diretorio que está o .jasper, está configurado como diretorio “source” no teu projeto do netbeans?

D

pessoal sejam mais persistentes!

configurar classpath no jar
http://www.guj.com.br/posts/list/25407.java

B

dlf:
pessoal sejam mais persistentes!

configurar classpath no jar
http://www.guj.com.br/posts/list/25407.java


Ola

É que a questão do nosso amigo é que o arquivo .jasper que gera o relatório não está indo junto com a distribuição, provavelmente uma falha na geração do jar… e a priori não é um NoClassDefFoundError… e sim um NullPointerException, como ele descreveu, saca?

D

pois é, mas pelo que ele disse no inicio e o erro no prompt que é um NoClassDefFoundError, acho que o problema é esse.

se no netbeans funciona pegando o .jaser assim “relatorios/rltxyz.jasper” entao o relatorio esta logo abaixo do source mesmo, ou entao ta configurado pra excluir outros resources quando vai empacotar o jar, no netbeans não sei como é o comportamento padrão disso

Jrmanzini

canseira…
consegui resolver copiando o lib do reports no classpath e colocando o endereço completo no parâmetro…mas e pra rodar em outros computadores oq deve ser feito?

valeu, obrigado pela ajuda! :lol:

D

Jrmanzini:
canseira…
consegui resolver copiando o lib do reports no classpath e colocando o endereço completo no parâmetro…mas e pra rodar em outros computadores oq deve ser feito?

valeu, obrigado pela ajuda! :lol:

tem varias forma por exemplo um .bat ou .sh configurando o classpath

mas acho que no teu caso ficaria melhor algo como neste topico http://www.guj.com.br/posts/list/25407.java configurando o classpath no meta-inf/manifest

Criado 27 de março de 2009
Ultima resposta 27 de mar. de 2009
Respostas 20
Participantes 4