Ireport com erro

Estou com um erro não estou conseguindo gerar o relatório com o IReport estou seguindo o livro Programação Java para Web a ultima versão do livro e não está gerando o relatório usando o IReport o relatório gera sem problemas mas na aplicação não segue o código da classe RelatorioUtil.java

RelatorioUtil.java

[code]package financeiro.web.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;

import javax.faces.context.FacesContext;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.oasis.JROdtExporter;
import net.sf.jasperreports.engine.util.JRLoader;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;

import financeiro.util.UtilException;

public class RelatorioUtil {

public static final int RELATORIO_PDF = 1;
public static final int RELATORIO_EXCEL = 2;
public static final int RELATORIO_HTML = 3;
public static final int RELATORIO_PLANILHA_OPEN_OFFICE = 4;

public StreamedContent geraRelatorio(HashMap parametrosRelatorio, String nomeRelarioJasper,
		String nomeRelatorioSaida, int tipoRelatorio) throws UtilException{
	
	StreamedContent arquivoRetorno = null;
	
	FacesContext context = FacesContext.getCurrentInstance();
	
	Connection conexao = this.getConexao();
	
	String caminhoRelatorio = context.getExternalContext().getRealPath("relatorios");
	String caminhoArquivoJasper = caminhoRelatorio+ File.separator + nomeRelarioJasper+
			".jasper";
	String caminhoArquivoRelatorio = null;
	
	
	
	try {
		JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(caminhoArquivoJasper);
		JasperPrint impressoraJasper = JasperFillManager.fillReport(relatorioJasper, 
				parametrosRelatorio,conexao);
		JRExporter tipoArquivoExportado = null;
		String extensaoArquivoExportado = "";
		File arquivoGerado = null;
		switch (tipoRelatorio) {
		case RELATORIO_PDF:
			tipoArquivoExportado = new JRPdfExporter();
			extensaoArquivoExportado = "pdf";
			break;
		case RELATORIO_HTML:
			tipoArquivoExportado = new JRHtmlExporter();
			extensaoArquivoExportado = "html";
			break;
		case RELATORIO_EXCEL:
			tipoArquivoExportado = new JRXlsExporter();
			extensaoArquivoExportado = "xls";
			break;
		case RELATORIO_PLANILHA_OPEN_OFFICE:
			tipoArquivoExportado = new JROdtExporter();
			extensaoArquivoExportado = "ods";
			break;
		default:
			tipoArquivoExportado = new JRPdfExporter();
			extensaoArquivoExportado = "pdf";
			break;
		}
		
		caminhoArquivoRelatorio = caminhoRelatorio + File.separator+nomeRelatorioSaida+"."+
		extensaoArquivoExportado;
		arquivoGerado = new File(caminhoArquivoRelatorio);
		tipoArquivoExportado.setParameter(JRExporterParameter.JASPER_PRINT,impressoraJasper);
		tipoArquivoExportado.setParameter(JRExporterParameter.OUTPUT_FILE,arquivoGerado);
		tipoArquivoExportado.exportReport();
		arquivoGerado.deleteOnExit();
		InputStream conteudoRelatorio = new FileInputStream(arquivoGerado);
		arquivoRetorno = new DefaultStreamedContent(conteudoRelatorio,"application/"+
		extensaoArquivoExportado,nomeRelatorioSaida+"."+extensaoArquivoExportado);
	} catch (JRException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	
	return arquivoRetorno;
	
}

private Connection getConexao() throws UtilException{
	Connection conexao  = null;
	
	try {
		Context initContext = new InitialContext();
		Context envContext = (Context) initContext.lookup("java:/comp/env/");
		DataSource ds = (DataSource) envContext.lookup("jdbc/FinanceiroDB");
		conexao = ds.getConnection();
	} catch (NamingException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	return conexao;
}

}
[/code]

Se alguém já fez essa aplicação do livro ou algo parecido me ajude não consigo achar o erro já pesquisei na net e tudo desde já agradeço a ajuda de todos.