Ireport com pdf no JSF

Olá amigos!

Estou utilizando a seguinte classe para gerar um relatório em pdf com jsf:

public static void imprimir(String relatorio, HashMap<String, Object> parametros, HttpServletResponse response, Connection conexao) {
        try {
            byte[] arquivo = new byte[0];

            Class classpath = new Object().getClass();
            URL url = classpath.getResource("/webponto/relatorios/" + relatorio + ".jasper");
            JasperReport jasper = (JasperReport) JRLoader.loadObject(url);

            JasperPrint print = JasperFillManager.fillReport(jasper, parametros, conexao);
            arquivo = JasperExportManager.exportReportToPdf(print);

            response.setContentType("application/pdf");
            response.setContentLength(arquivo.length);

            OutputStream saida = response.getOutputStream();

            saida.write(arquivo, 0, arquivo.length);
            saida.flush();
            saida.close();
        

        } catch (Exception ex) {
            System.err.println("O arquivo não foi gerado corretamente!");
            ex.printStackTrace();
        }
    }

Porém a variável url está ficando com valor null.

Como posso resolver isso?

Desde já agradeço!

cara vc ta passando relatorio por parametro,

public static void imprimir(String relatorio, 

e escrevendo ele na url como string

URL url = classpath.getResource("/webponto/relatorios/+ relatorio + ".jasper"); 

tente alterar para

URL url = classpath.getResource("/webponto/relatorios/"+ relatorio + ".jasper"); 

Obrigado por responder Hudson!

Mas foi um erro na hora de postar, pois eu tinha alterado para testes. Na verdade eu já estou utilizando como em sua correção e está dando o erro. Tem alguma idéia??
É a primeira vez que faço isso e não estou conseguindo resolver, se puder me ajudar de alguma forma lhe agradeço!

Abraço!

  • Vou corrigir na primeira mensagem…

Pessoal, por favor, alguém sabe como resolver esse problema?
Ainda não consegui resolver…

Desde já agradeço a todos!

[quote=Xande_cf]Pessoal, por favor, alguém sabe como resolver esse problema?
Ainda não consegui resolver…

Desde já agradeço a todos!
[/quote]

a url que colocou acima está completa e correta? porque no caso ele não está achando o endereço, ou está passando algum nome de relatório inexistente.

Está correta e completa sim!
Eu somente consegui fazer exibir o relatório trocando “URL url = classpath.getResource(”/webponto/relatorios/" + relatorio + “.jasper”);" por “URL url = new URL(“file:C:/fechamento3.jasper”);” , trocando o arquivo .jasper de local, é claro. Mas sei que não vai poder ficar assim…
Com o classpath.getResouce não funciona nem por nada! Então, de que outra maneira eu posso fazer?

Obrigado!

Então pessoal, alguma sugestão???
Alguém pode dar uma força?

Então, Xande_cf

você conseguiu resolver esse probelma ?

Estou enfrentando a mesma situação aqui, se você puder postar a solução eu agradeço.

utilizo assim ::::


String jasper = request.getContextPath()+ "/report/report/"+nomeRelatorio;   
			host = "http://" + request.getServerName() + ":" + request.getServerPort();   
			URL jasperURL        = new URL(host + jasper);

	        response.setContentType(CONTENT_TYPE_PDF);     
		    byte[] bytes = JasperRunManager.runReportToPdf(jasperURL.openStream(), parameters, con);     
			if (bytes != null) {     
			     ops = response.getOutputStream();     
			     ops.write(bytes);     
			     ops.flush();  
			     ops.close();  
			                       
			}