JasperReport

Olá pessoal.
Talvez o problema aqui seja velho, mas não estou conseguindo achar a solução.
Estou tentando gerar um relatório em jasper, só que a variável “in”, abaixo, sempre vem nula.
O caminho está correto, mas sempre vem nula.
Alguém poderia me ajudar.
Obrigado.

...
JRExporter exporter = new JRPdfExporter();
JasperPrint jp = null;
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
InputStream in = getClass().getClassLoader().getResourceAsStream(path + "/relatorio/relatorioProjeto.jasper");
...

Olá andreln,

Tenta sem o .getClassLoader()

InputStream in = getClass().getResourceAsStream(path + "/relatorio/relatorioProjeto.jasper"); 

Web ou desktop?

O projeto é web.
Tirando o “getClassLoader()” continua não funcionando.

Então, sendo web, isso nunca funcionará.
Para obter o caminho de alguma coisa dentro do aplicativo web, você precisa chamar o contexto da aplicação.

Aqui tem uns exemplos.
Só veja se está usando jsf 2, que daí tem uns truques…

Se for JSF faça algo assim:

FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.responseComplete();
ServletContext scontext = (ServletContext) facesContext.getExternalContext().getContext();
JasperPrint jasperPrint = JasperFillManager.fillReport(scontext.getRealPath("/relatorio/relatorioProjeto.jasper"), parameters, ds);

É em struts2.
Mas o contexto já foi recuperado dentro do path.