JasperPrint jpPrint = JasperFillManager.fillReport(getClass().getResourceAsStream("relatorios/teste1.jasper"), new HashMap(),realResul);
Retorna java.lang.NullPointerException.
JasperPrint jpPrint = JasperFillManager.fillReport(getClass().getResourceAsStream("relatorios/teste1.jasper"), new HashMap(),realResul);
Retorna java.lang.NullPointerException.
Testa com o que o darlan disse e com o código abaixo acrescentando ‘/’ no início do caminho passado como parâmetro.
getClass().getResourceAsStream("/relatorios/test1.jasper");
ou
NomeDaClasse.class.getResourceAsStream("/relatorios/test1.jasper");
Dessa forma o user.dir vai encontrar onde .jar esta e dali em diante você poderia entrar em alguma pasta
caminho = System.getProperty(“user.dir”) + “”\\relatorios\\teste1.jasper";
@AntonioSantos e @darlan_machado obrigado pelas respostas, mas não funcionou em nenhuma possibilidade. Será que o fato de eu ter movido a pasta do projeto para a área de trabalho pode influenciar em algo?
sempre usa 2 > \\
System.getProperty("file.separator")
resolve essa questão.
Tem certeza que o nome está correto do relatório?
E você consegue visualizar o arquivo do relatório pelo Package Explorer da IDE? Tenta dar um Refresh no projeto, selecionando e pressionando F5 ou clica com o direito e refresh, e tenta rodar novamente.
Olha só, posta o print com a estrutura de pastas do projeto que fica mais fácil.
Testa o caminho como abaixo:
"../relatorios/test1.jasper"
Obrigado a todos pela ajuda. Consegui resolver alterando a linha do caminho para a seguinte :
JasperPrint jpPrint = JasperFillManager.fillReport(“src/relatorios/teste1.jasper”, new HashMap(),realResul);
Porém cheguei a um outro problema, como eu uso o java web start, após subir os arquivos atualizados para meu servidor ftp, o usuário que executa o launcher não consegue gerar os relatórios por causa do arquivos teste1.jasper (diz que não foi encontrado ), por que isso está ocorrendo ?
O link que enviei fala sobre isso.
Seu .jasper está dentro da pasta relatórios, então é só fazer:
getClass().getResourceAsStream("/relatorios/teste1.jasper")
Como já foi dito, quando você usa o getResourceAsStream
, a String tem que começar com “/” para procurar a partir da raíz do classpath
de sua aplicação.
Se o método retorna null
, então o recurso não está no caminho correto ou não foi empacotado no JAR ou ZIP.
Aqui funcionou, valeu!
conecta.conexao();
try {
conecta.executaSQL("SELECT * FROM tabela WHERE coluna ILIKE '%" + camponome.getText() + "%'");
JRResultSetDataSource relatResul = new JRResultSetDataSource(conecta.rs);
JasperPrint jpPrint = JasperFillManager.fillReport(getClass().getResourceAsStream("/relatorio/Arquivo.jasper"), new HashMap(), relatResul);
JasperViewer jv = new JasperViewer(jpPrint, false);
jv.setVisible(true);
jv.toFront();
} catch (JRException e) {
JOptionPane.showMessageDialog(null, "Erro ao Selecionar os Dados!\nErro:" + e);
}
conecta.desconecta();
@staroski e @rodriguesabner obrigado pelas respostas, consegui resolver com a ajuda de vocês.
Você testou antes de dizer que não dava certo??
@AntonioSantos sim testei, porém sem sucesso. Agora pela manhã apaguei o trecho de código e adaptei o modelo do @rodriguesabner de acordo com minha necessidade e funcionou perfeitamente. Achei um tanto estranho, visto que tentei essas 4 possibilidades ontem :
getClass().getResourceAsStream("/relatorios/test1.jasper");
NomeDaClasse.class.getResourceAsStream("/relatorios/test1.jasper");
getClass().getResourceAsStream(“relatorios/test1.jasper”);
NomeDaClasse.class.getResourceAsStream(“relatorios/test1.jasper”);
mas agradeço pela ajuda.
Se foi essa linha de código que te ajudou, foi exatamente o que eu tinha dito.
Se foi você não testou certo!
foi isso.