Erro com Relatorio Irport usando JSF2.0

Saudações colegas desenvolvedores, estou tentando gerar relatórios usando a ferramenta Ireport e incorporando-os a uma pasta dentro do meu projeto no netbeans, porém na hora de executar o método:

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

retorna um erro de NullPointerException.Abaixo disponho a classe que estou usando para chamar o relatório.Já pesquisei alguns blogs e baseado neles cheguei a essas classes.

RelatorioBean.java

@Named
@SessionScoped
public class RelatorioBean extends DatabaseUtil{

	private String saida;
	
	
	public String geraRelatorioPassandoConexao() {
		saida = null;
		String jasper = getDiretorioReal("/relatorios/teste.jasper");
                System.out.print("Valor variável Jasper" + jasper);
		Connection conexao = null;

		try {
                    
                        FacesContext facesContext = FacesContext.getCurrentInstance();
                       
                        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
			// Abro a conex?o com o banco que ser· passada para o JasperReports
			conexao = getConnection();
			// Mando o jasper gerar o relatÛrio
                        HashMap parametros = new HashMap();
			//
                        JasperPrint print = JasperFillManager.fillReport(jasper, parametros, conexao);
			System.out.println(print.toString());
                        // Gero o PDF
			//preenchePdf(print);
                        JasperViewer jrv = new JasperViewer(print);
                        jrv.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				// Sempre mando fechar a conex?o, mesmo que tenha dado erro
				if (conexao != null)
					conexao.close();
			} catch (SQLException e) {
				
			}
		}
		
		return "exibeRelatorio";
	}
	
	public String getSaida() {
		return saida;
	}

	public void setSaida(String saida) {
		this.saida = saida;
	}
        
        private String getDiretorioReal(String diretorio) {
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
		return session.getServletContext().getRealPath(diretorio);
	}
	
	 	
	
}

Se alguém puder me auxliar fico bem grato, pois estou já há alguns dias apanhando desse relatório.

att.

Alexandre

No erro do NullPointerException ele aponta para a linha exata do erro.

Qual é a linha? e qual o código nela?

Aponta sim amigo, é essa linha aqui:

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

eu estou passando relatório sem resultset, já montado usando a ferramenta ireport, será essa a causa do erro?

grato pela sua atenção!

Alexandre

[quote=alexandresobral2004]Aponta sim amigo, é essa linha aqui:

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

eu estou passando relatório sem resultset, já montado usando a ferramenta ireport, será essa a causa do erro?

grato pela sua atenção!

Alexandre[/quote]Todos os parâmetros estão preenchidos corretamente? Existe algum null?

Existe sim, a variável parâmetros foi criada, mas n tem nada atribuido, porque o relatório foi criado sem parâmetros adicionais.

att.

Alexandre

[quote=alexandresobral2004]Existe sim, a variável parâmetros foi criada, mas n tem nada atribuido, porque o relatório foi criado sem parâmetros adicionais.

att.

Alexandre[/quote]Não entendi. Eu perguntei duas coisas.
O existe sim é para caso todas estão preenchidas ou tem variável null?

Todos os parâmetros estão preenchidos corretamente?
R: Estão sim todos preenchidos, porém a variavel parametros que está nessa linha abaixo que é a causadora do erro

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

É um Hashmap e não está mapeando nada. É apenas um objeto instanciado.

Existe algum null?
não

E ai blz!!
Veja bem, no trecho de seu codigo abaixo vc instanciou um objeto parametros, porém vc não esta repassando nenhum parameto, logo o “parametro” esta nulo!!!

HashMap parametros = new HashMap(); JasperPrint print = JasperFillManager.fillReport(jasper, parametros, conexao); System.out.println(print.toString());
vc deveria ter algo tipo:

HashMap parametros = new HashMap(); parametros.put("nome", this..usuario.getNome());//nome será o parametro que vc definiu no relatorio JasperPrint print = JasperFillManager.fillReport(jasper, parametros, conexao); System.out.println(print.toString());

Nada disso.
Veja que ele faz HashMap parametros = new HashMap();
Logo, o objeto parametros não é nulo, ele apenas não possui nenhum atributo com valor.
O que eu estou imaginando é que o null pointer seja dado pelo atributo conexão, pois, se ele fizesse a chamada desta forma:

JasperPrint print = JasperFillManager.fillReport(jasper, null, conexao); 

Funcionaria…(eu acho)

[quote=drsmachado]Nada disso.
Veja que ele faz HashMap parametros = new HashMap();
Logo, o objeto parametros não é nulo, ele apenas não possui nenhum atributo com valor.
O que eu estou imaginando é que o null pointer seja dado pelo atributo conexão, pois, se ele fizesse a chamada desta forma:

JasperPrint print = JasperFillManager.fillReport(jasper, null, conexao); 

Funcionaria…(eu acho)[/quote]Eu concordo. Até o (eu acho eu concordo).

Não vi pq um new HashMap() iria causar nullpointer. Se o relatório não aceita parâmetros, ele seria obrigado a passar? O.o