Relatorio em arquivo jar

17 respostas
M

ola pessoal …
criei um arquivo jar para minha aplicacao, quando executo pelo eclipse, ele funciona, mas quando tento rodar ele, da o seguinte erro:

“java.io.FileNotFound.Exception: relatorio.jasper”

o que pode ser ??
criei meu jar com o proprio eclipse usando o fat jar …

17 Respostas

D

bom dia Marcos,

Pode postar o código de como vc está recuperando o caminho do .jasper…
Perguntinha: Já tentou extrair o jar para ver se realmente o .jasper está ali dentro?

t+

M

o nome do meu workspace no eclipse eh teste …
entao esta assim minhas pastas :

C:\eclipse\workspace\teste
C:\eclipse\workspace\teste\bin\teste*.class´s
C:\eclipse\workspace\teste\pacote*.jar´s
C:\eclipse\workspace\teste\src\teste*.java´s

coloquei o .jasper dentro de teste (C:\eclipse\workspace\teste) e nao funcionou …

rel = JasperFillManager.fillReport( "Atualiza.jasper" , map, jrRS);

coloquei o .jasper dentro da pasta C:\eclipse\workspace\teste\bin\teste e tambem nao funcionou …

rel = JasperFillManager.fillReport( "teste/Atualiza.jasper" , map, jrRS);
D

Marcos,

Vc pode recuperar o seu arquivo com getResorce()…

dá uma olhada:

...  
 // Nome do arquivo .jasper  
 // File arquivo = new File( class.getResource );        
 URL arquivo = getClass().getResource("/Relatorio.jasper");  
 if (arquivo == null) {  
     // tratamento de erro  
     System.err.println("/Relatorio.jasper nao encontrado");  
     return;  
 }  
   
 // Parte de configuraçao do Report  
 JasperReport jr = (JasperReport) JRLoader.loadObject( arquivo );  
 ...

t+

M

ola …

nao entendi essa parte do codigo postado …

// Parte de configuraçao do Report  
 JasperReport jr = (JasperReport) JRLoader.loadObject( arquivo );
D

de acordo com a URL o JRLoader vai carregar o seu arquivo Jasper…

M

ainda nao deu certo …

D

Cola o stacktrace da exception aqui…
vc imprimiu a URL pega com o getResource()…não estava apontando para o caminho do seu arquivo?

t+

M

nao …

usei o seguinte …

URL arquivo = getClass().getResource("/Atualiza.jasper");
			 System.out.println("aki " + arquivo);

mas ele imprimi “null”

M

tenta o seguinte:

URL arquivo = getClass().getResource("\Atualiza.jasper");

Pq o diretório que vc postou: C:\eclipse\workspace\teste utiliza barras invertidas… talvez seja isso.

Tenta e depois posta aqui o resultado :wink:
att.
Mari

M

qual classe devo importar, import java.net.URL; ??

URL arquivo = getClass().getResource("\Atualiza.jasper");
System.out.println(arquivo);

porque fiz isso e imprimir “null” …

M

olha so, fiz o seguinte e funcionou …

URL localidade = getClass().getResource("boleto_bbr.jasper");
 			if (localidade==null) JOptionPane.showMessageDialog(null , "Erro ao tentar procurar relatório !" , "Operador" , JOptionPane.ERROR_MESSAGE);
 			JasperReport jr = (JasperReport) JRLoader.loadObject( localidade );

mas como faco pra visualizar o relatorio, pois antes eu visualizava ele assim :

String caminho = "arquivos/coren/boleto_bbr.jasper" ;
 			JasperPrint impressao = JasperFillManager.fillReport( caminho , parameters , jrRS );
 			JasperViewer viewer = new JasperViewer(impressao, false);
 			viewer.setVisible(true);
 			viewer.setTitle("Boleto");

???

M

ola so, achei alguma coisa na web …

agora meu codigo esta assim :

URL localidade = getClass().getResource("boleto_bbr.jasper");
 			if (localidade==null) JOptionPane.showMessageDialog(null , "Erro ao tentar procurar relatório !" , "Operador" , JOptionPane.ERROR_MESSAGE);
 			JasperReport jr = (JasperReport) JRLoader.loadObject( localidade );
 			JasperPrint impressao = JasperManager.fillReport(jr , parameters , jrRS);
 			JasperViewer viewer = new JasperViewer(impressao,false);
 			viewer.setVisible(true);
 			viewer.setTitle("Boleto");

ele funciona beleza, mas o metodo ficou “deprecated” …
pelo que eu sei, isso acontece porque ja existe outro metodo mais atual sendo usado, e esse deve ser substituido …
o que posso fazer nesse caso ??

M

desse jeito nao deu certo, na hora de executar o relatorio deu o seguinte erro :

error loading expression class

o que pode ser ??

V

Oi
Também estou tendo problemas para exibir o relatório pelo jar, porém o erro que aparece é o seguinte

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: net/sf/ja sperreports/engine/JRException

Alguém pode me ajudar?

D

Oi Verônica o seu erro parece a ausência de uma lib no classpath da aplicação…
pode me passar mais detalhes?

t+

V

OI

Acredito que o classpath esteja ok.
Mas de qualquer forma dê uma olhadinha pra mim.

<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path=""/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="lib" path="commons-collections-2.1.jar"/> <classpathentry kind="lib" path="commons-javaflow-20060411.jar"/> <classpathentry kind="lib" path="commons-logging-api-1.0.2.jar"/> <classpathentry kind="lib" path="iReport.jar"/> <classpathentry kind="lib" path="jasperreports-2.0.2.jar"/> <classpathentry kind="lib" path="xalan.jar"/> <classpathentry kind="output" path=""/> </classpath>

M

consegui fazer funcionar depois de muito tempo

quem precisar eh so avisar

Criado 9 de maio de 2007
Ultima resposta 10 de dez. de 2007
Respostas 17
Participantes 4