PROBLEMA COM GERAÇÃO DE PDF VIA JASPER JasperRunManager.runReportToPdf

Pessoal,

Já estou a um tempo pesquisando em diversos lugares porem sem sucesso,
agora peço a ajuda de vocês POR FAVOR.

Na geração do meu pdf via iReport estou tendo nullpointer.
O local do .jasper esta correto na aplicação.

estou usando o iReport-4.7.0

[code]//CLASSE GERA PDF
public static void enviarArquivoPdf(HttpServletResponse response,
JasperReport jasperReport, Map parametros, List lista,String nomeArquivo)
throws JRException, IOException {

	JRDataSource dataSource = new JRBeanCollectionDataSource(lista);
	
	System.out.println("jasperReport - "+jasperReport);
	System.out.println("parametros - "+parametros);
	System.out.println("dataSource - "+dataSource);
	
	byte[] pdfEmFormatoBytes = JasperRunManager.runReportToPdf(jasperReport, parametros, dataSource);
	
	response.setContentType("application/pdf");
	response.setHeader("Content-Disposition", "attachment; filename=" + nomeArquivo);
	response.setContentLength(pdfEmFormatoBytes.length);

	ServletOutputStream ouputStream = response.getOutputStream();
	ouputStream.write(pdfEmFormatoBytes);
	ouputStream.flush();
	ouputStream.close();
}[/code]

JARS UTILIZADOS: commons-beanutils-1.8.0.jar commons-collections-3.2.jar commons-digester-1.8.jar commons-logging.jar groovy-all-1.7.5.jar itext-2.1.7.jar jasperreports-3.0.0.jar

ERRO [14/08/12 10:13:53:643 ACT] 000002d1 SystemErr R java.lang.NullPointerException [14/08/12 10:13:53:643 ACT] 000002d1 SystemErr R at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) [14/08/12 10:13:53:643 ACT] 000002d1 SystemErr R at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) [14/08/12 10:13:53:643 ACT] 000002d1 SystemErr R at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:419) [14/08/12 10:13:53:643 ACT] 000002d1 SystemErr R at br.com.intermedica.commonjasper.RelatorioUtil.enviarArquivoPdf(RelatorioUtil.java:139)

DESDE JÁ
MUITO OBRIGADO

O que tem neste linha 139?

br.com.intermedica.commonjasper.RelatorioUtil.enviarArquivoPdf(RelatorioUtil.java:139)
Aliás, chuto que seja um destes que está nulo: jasperReport, parametros, dataSource

e ai cara blz,

então ao meu ver não estão, seguem os prints dos 3 que estou passando, olhe só:

SystemOut O jasperReport - net.sf.jasperreports.engine.JasperReport@f820f82 SystemOut O parametros - {net.sf.jasperreports.text.truncate.at.char=true} SystemOut O dataSource - net.sf.jasperreports.engine.data.JRBeanCollectionDataSource@6d8a6d8a

a linha 139 se refere a linha 13 do metodo que gera o pdf.

abs

Qual a linha?

a linha 139 se refere a linha 13 do metodo que gera o pdf.

[quote=Roberto Porto]
a linha 139 se refere a linha 13 do metodo que gera o pdf.
abs[/quote]
Uma linha vazia?

[code]
//CLASSE GERA PDF
public static void enviarArquivoPdf(HttpServletResponse response,
JasperReport jasperReport, Map parametros, List lista,String nomeArquivo)
throws JRException, IOException {

    JRDataSource dataSource = new JRBeanCollectionDataSource(lista);  
      
    System.out.println("jasperReport - "+jasperReport);  
    System.out.println("parametros - "+parametros);  
    System.out.println("dataSource - "+dataSource);  
      
    byte[] pdfEmFormatoBytes = JasperRunManager.runReportToPdf(jasperReport, parametros, dataSource);  
      //linha 13
    response.setContentType("application/pdf");  
    response.setHeader("Content-Disposition", "attachment; filename=" + nomeArquivo);  
    response.setContentLength(pdfEmFormatoBytes.length);  

    ServletOutputStream ouputStream = response.getOutputStream();  
    ouputStream.write(pdfEmFormatoBytes);  
    ouputStream.flush();  
    ouputStream.close();  
} [/code]

Me desculpe drsmachado, me refiro a linha 12.

os parâmetros não estão nulos, não consegui entender o que esta ocorrendo =/

[quote=Roberto Porto]Me desculpe drsmachado, me refiro a linha 12.

No map eu seto uma variável mas não estou usando ela no iReport.

Os parâmetros não estão nulos, não consegui entender o que esta ocorrendo =/
[/quote]

DESDE JÁ OBRIGADO

Eu ainda insisto que algum dos valores está nulos.
Por que não efetua um debug e confere se TODOS os atributos que são recebidos não estão nulos.
Note que você já testa dataSource quando ele está criado e não verifica se a lista foi recebida nula…

Tens razão drsmachado, vou verificar como essa lista esta vindo para mim e ja te informo!

Obrigado

drsmachado fiz os testes necessários, não vejo nenhum nada nulo ou vázio, apenas, porem eu não utilizo ele.
teria alguma influencia? seguem como eles estão vindo para mim.

14/08/12 13:49:59:038 ACT] 000002d6 SystemOut O lista.size() - 1 [14/08/12 13:49:59:038 ACT] 000002d6 SystemOut O lista - [br.com.guias.vo.GuiaInternacaoVO@58045804] [14/08/12 13:49:59:038 ACT] 000002d6 SystemOut O lista.size() - 1 [14/08/12 13:49:59:038 ACT] 000002d6 SystemOut O jasperReport - net.sf.jasperreports.engine.JasperReport@498c498c [14/08/12 13:49:59:038 ACT] 000002d6 SystemOut O parametros - {} [14/08/12 13:49:59:038 ACT] 000002d6 SystemOut O parametros.size() - 0

Grato

fiz o tratamento, entra na condição mas ainda da null pointer

[code]//gera pdf
public static void enviarArquivoPdf(HttpServletResponse response,
JasperReport jasperReport, Map parametros, List lista, String nomeArquivo)
throws JRException, IOException {

	if(lista!=null && lista.size()>0 && jasperReport!=null){
				
		JRDataSource dataSource = new JRBeanCollectionDataSource(lista);
						
		byte[] pdfEmFormatoBytes = JasperRunManager.runReportToPdf(jasperReport, parametros, dataSource);
		
			System.out.println("pdfEmFormatoBytes - "+pdfEmFormatoBytes);
			
			response.setContentType("application/pdf");
			response.setHeader("Content-Disposition", "attachment; filename=" + nomeArquivo);
			response.setContentLength(pdfEmFormatoBytes.length);
	
			ServletOutputStream ouputStream = response.getOutputStream();
			ouputStream.write(pdfEmFormatoBytes);
			ouputStream.flush();
			ouputStream.close();
	
	}
}[/code]

O método runReportToPDF é um método estático, logo, não pode ser o objeto de JasperRunManager que está nulo.
O que resta, então?
Os parâmetros.
Pelo que vi, você não é adepto do uso do debug, certo? Pois usou System.out.println para exibir os dados.
Creio que com um debug bem minucioso, você consiga encontrar onde ocorre o problema.

Então, fiz uns testes aqui, tenho uma servlet que faz quase a mesma coisa (ela cria um gráfico junto).
Passei um objeto null dentro da lista que cria o JRBeanCollectionDataSource, porém, não recebi NPE.
Verificando, estou usando uma versão bem antiga do iReport.
Comparando os jars, tive a surpresa:

commons-beanutils-1.8.0.jar  
commons-collections-3.2.jar  
commons-digester-1.8.jar  
commons-logging.jar  
groovy-all-1.7.5.jar  
itext-2.1.7.jar  
jasperreports-3.0.0.jar 

Meu jasperreports é da versão 3.7.2 e, o teu, incrivelmente, é da versão 3.0.0!!!

Pode ser que não tenha nada a ver, mas pode ser incompatibilidade deste jar com os demais.