(resolvido) ireport dando um erro

4 respostas
jonasjgs2

amigos,
estou sofrendo com manuais e perturbando vcs...
mas e assim que agente consegue aprender...

seguinte:

estou estudando agora ireport
blz...

consegui fazer um relatorio chamado UsuarioRel.jasper
ele esta dentro do meu projeto no pacote "relatorios"
porem quando eu executo o metodo me da filenotfound

o que pode ser:

observem que ja coloquei o "relatorios.UsuarioRel.jasper"
e tb ja coloquei "UsuarioRel.jasper" e mesmo assim da o mesmo erro

public static void GerarRelatorio(JRDataSource source) throws JRException {
        Map map = new HashMap();
        JasperFillManager.fillReportToFile("relatorios.UsuarioRel.jasper", map, source);
        JasperViewer.viewReport("UsuarioRel.jrprint", false);

    }

erro:

net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: relatorios.UsuarioRel.jasper
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:94)
at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:458)
at relatorios.TesteRel.GerarRelatorio(TesteRel.java:31)
at relatorios.TesteRel.main(TesteRel.java:22)
Caused by: java.io.FileNotFoundException: relatorios.UsuarioRel.jasper
... 4 more

4 Respostas

jhaga

O arquivo .jasper está em qual pasta do seu projeto?
Uma tentativa é movê-lo para a pasta raiz do seu projeto, quando não se usa o caminho completo.

jonasjgs2

como eu falei ele se encontra no pacote do projeto
chamado “relatorios”

Bruno_M_Gasparotto

Fala Jonas, beleza cara?

A estrutura de diretórios do seu projeto, está assim: "NomeDoProjeto/relatorios/UsuarioRel.jasper" ?

Sua idéia é exibir o relatório na tela? Se sim, tente da seguinte forma:

InputStream inputStream = getClass().getResourceAsStream( "/UsuarioRel.jasper" ); // Caminho do arquivo

JasperPrint print = JasperFillManager.fillReport(inputStream, map, source); // Gera o relatório e armazena na variável "print"
viewReportFrame( "Meu relatório", print ); // Abre um frame exibindo o relatório gerado

o método viewReportFrame eu peguei de um tutorial que vou postar logo mais, e ele ficaria assim:

private static void viewReportFrame( String titulo, JasperPrint print ) {
        //Cria um JRViewer para exibir o relatório.
         //* Um JRViewer é uma JPanel.
        JRViewer viewer = new JRViewer( print);
       
       // cria o JFrame
        JFrame frameRelatorio = new JFrame( titulo );
        
       // adiciona o JRViewer no JFrame
        frameRelatorio.add( viewer, BorderLayout.CENTER );
        
        // adiciona o JRViewer no JFrame
        frameRelatorio.add( viewer, BorderLayout.CENTER );
        
        // configura o tamanho padrão do JFrame
        frameRelatorio.setSize( 500, 500 );
        
        // maximiza o JFrame para ocupar a tela toda.
        frameRelatorio.setExtendedState( JFrame.MAXIMIZED_BOTH );
        
        // configura a operação padrão quando o JFrame for fechado.
        frameRelatorio.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
        
        // exibe o JFrame
        frameRelatorio.setVisible( true );

   }

Desse modo você não precisa ocupar espaço gravando um arquivo .jrprint no sistema só pra ter que abri-lo depois, o viewReportFrame já exibe o relatório e te dá opções de salvar o relatório em vários formatos, além de exibir na tela.

Link do tutorial que utilizei: http://davidbuzatto.com.br/2010/10/09/jasperreports-trabalhando-com-relatorios-em-java-parte-1/

jonasjgs2

obrigado bruno…
deu certo…
consegui resolver

Criado 22 de agosto de 2012
Ultima resposta 23 de ago. de 2012
Respostas 4
Participantes 3