Erro abrir um pdf gerado pelo jasperreport

Boa Tarde,

estou gerando um arquivo no formato pdf na minha aplicação utilizando jsf, jpa e spring, tenho diversos exemplos.

Meu problema é o seguinte, coloco os exemplos na aplicação, gera o pdf, ao abrir pelo acrobat mostra a seguinte mensagem traduzida.
O Adobe Reader não pode abrir este tipo de aquivo pois não fornece suport ou ele foi danificado por exemplo (foi enviado com anexo de email e não foi decodificado corretamente).

Qualquer arquivo .jasper de projetos ja pronto na internet abre, porém quando é alterado e compilado pelo ireport que esta instalado na minha maquina dá este erro. a versão que estou utilizando é iReport-4.5.1.
Será alguma configuração que não estou fazendo da forma correta ?.

Tive esse erro em situações em que o relatório não foi baixado por completo.
Como está a rotina que cria o pdf?

Cara, esse erro ocorre geralmente qnd o os bytes que gera o relatorio não é carregado e o pdf compila um objeto nulo…
posta pra gente o codigo que gera o pdf…

Realmente o objeto esta passando como nulo, porém ainda não tentei tratá-lo, o que intrega é, tenho um arquivo gerado pelo ireport, cujo nomes e extensões são relatorio.jasper e relatorio.jrxml, porque estou deduzindo que seja alguma configuração no programa ireport. Para identificar o problema achei uma aplicação exemplo no seguinte link:

http://profpaulovmdutra.blogspot.com.br/2011/08/gerando-relatorios-pdf-e-rtf-com.html

compilei funcionou uma maravilha, ai abri o arquivo do exemplo relatorio.jrxml no ireport e copilei ele, gerando então o relatorio.jasper, substitui o que ja estava na aplicação exemplo, ai deu o mesmo erro que esta dando na minha aplicação conforme mencionado acima.

o que será ?

Tinha que abrir pelo menos o template colorido sem os dados dos objetos.

Link correto do exemplo que utilizei.
http://profpaulovmdutra.blogspot.com.br/2011/08/gerando-relatorios-pdf-e-rtf-com.html

SEGUE O CODIGO DA MINHA APLICAÇÃO ESTA RETORNANDO NULL, NO OBJETO

//separa a pesquisa do total encontrado

//possibilitando a utilização também no relatório
public List<?> getRelatorioPesqPoi(){

    Map<String, Object> params = new HashMap<String, Object>();
params.put("data1", data1);	
params.put("data2", data2);	

    String query = "SELECT p FROM Poi p WHERE p.dabertura BETWEEN :data1 AND :data2";
return poiDao.listPesqParam(query,params);

}

//inicio
// executa o relatório através de um JRBeanCollectionDataSource
public static void executarRelatorio1(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel,
JRBeanCollectionDataSource fonteDados) throws ParseException, JRException {

FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();

// pega o caminho do arquivo .jasper da aplicação
InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);

/*
 * //envia a resposta com o MIME Type
 * if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.ACROBAT_PDF)){
 * response.setContentType("application/pdf"); }else
 * if(tipoFormatoRelatorio.equals(TipoFormatoRelatorio.PAGINA_HTML)){
 * response.setContentType("application/html"); }
 */
response.setHeader("Content-Disposition", "attachment; filename=" + nomeRel + ".pdf");

// response.setContentType(“application/download”);
response.setContentType(“application/pdf”);
response.setHeader(“Pragma”, “no-cache”);
try {
ServletOutputStream servletOutputStream = response.getOutputStream();

    // envia parametros para o relatório
    if (parametros == null) {
    parametros = new HashMap<String, Object>();
    }

    // envia para o navegador o PDF gerado
    JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
    servletOutputStream.flush();
    servletOutputStream.close();

} catch (JRException e) {
    e.printStackTrace();
    //throw new Exception("Um erro ocorreu quando o relatório estava sendo executado.");
} catch (IOException e) {
    e.printStackTrace();
    //throw new JRException(ERRO_MENSAGEM_REPORT);
} finally {
    context.responseComplete();
}
}

@SuppressWarnings( { "unchecked" })
public void executarRelatorio(ActionEvent action) throws ParseException, Exception {
List dados = new ArrayList();
Map record = null;



for (Iterator<?> iterator = getRelatorioPesqPoi().iterator(); 
	 		iterator.hasNext();) {
    
    Poi o = (Poi) iterator.next();
    record = new HashMap();
    // coloca em um Map cada um dos campos criados
    // manualmente pelo relatorio
 record.put("id",Long.valueOf(o.getId()));
record.put("cargo", o.getCargo());



    // adiciona o List dados
    dados.add(record);

}

// cria uma fonte de dados para coleções
JRBeanCollectionDataSource fonteDados = new JRBeanCollectionDataSource(dados);
Map<String, Object> parametros = new HashMap<String, Object>();
// parametros.put("PARAMETRO_TITULO_RELATORIO",
// "RELATÓRIO DE UNIDADES");

executarRelatorio1("/relatorios/relatorio.jasper", parametros, null, fonteDados);

}

Resolvi, para quem tiver o mesmo problema a resolução é, você deve usar as bibliotecas no projeto com as mesma versão do sistema ireport.