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();
}
}
Relatório não abre no Jar
20 Respostas
Ola,
Dentro do jar, onde fica o arquivo: relatório/RelatNotas2.jasper???
dentro do jar tem a pasta relatorios e dentro dela a classe…RelatNotas
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.
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);
ao colocar essa linha da o erro null pointerException…
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 …
quando eu descompactei o jar tem uma pasta chamada relatorio e dentro dela um arquivo.class chamdo RelatNotas…mais nada
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?
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?
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.
Pô, vc tá usando o netbeans para gerar o jar ou tá fazendo via ant??? ou na mao mesmo?
to usando o netbeans pra gerar o jar
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.
ao colocar essa linha da o erro null pointerException…
como eu coloco o jar no classpath?
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?
pessoal sejam mais persistentes!
configurar classpath no jar
http://www.guj.com.br/posts/list/25407.java
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?
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
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:
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