NullPointerException no Jasper, não sei porque

Alguem me fala da onde tem um objeto null que nao consigui achar, ja debuguei ja vi os valores das variaveis e até agora nao descobri qual é o maldito que ta me lançando esse npe.

[code]String path = “C:\CVM\Produtos\TPC_VIEW\WebContent\Relatorios\relatorio_tpc.jasper”;
System.out.println(path); // ta com o caminho ok, e o arquivo esta la
System.out.println( Teste.this.getSource()); // imprime o toString() do objeto

					JasperPrint print = JasperFillManager.fillReport(path, new HashMap(), NULL AQUI.
																  Teste.this.getSource());[/code]

JasperFillManager

ueh mas nullPointer onde?

Alguem sabe pq o null?

Fazendo os teste nada acusa o nullPointer:

[code]InputStream path = Teste.this.getClass().getResourceAsStream("\Relatorios\a.jasper");
String caminho = “C:\CVM\Produtos\TesteSwing\src\Relatorios\a.jasper” ;
System.out.println(caminho);
System.out.println(path); // imprime ok o toString
System.out.println(Teste.this.getSource());

					//JasperReport relatorio = JasperCompileManager.compileReport("C:\CVM\Produtos\TesteSwing\src\Relatorios\a.jrxml");   

																				
					JasperPrint print = JasperFillManager.fillReport(path, new HashMap(), // aqui me gera null nao sei da onde
																  Teste.this.getSource());
					
					JasperViewer.viewReport(print,true);[/code]

aqui ta o método getSource que estou testando, e ele seria usado para preencher o relatorio

[code]public JRDataSource getSource(){

	List<Cliente> cliente = new ArrayList<Cliente>();
	
	Cliente c = new Cliente(1,"everton");
	
	cliente.add(c);
	
	c = new Cliente(2,"pedro");
	
	cliente.add(c);
	
	JRDataSource source = new JRBeanCollectionDataSource(cliente);
	
	return source;
	
	
}[/code]

É assim:

InputStream is = getClass().getResourceAsStream( "/Relatorios/a.jasper" );

Cuidado que o nome do pacote e do arquivo são case sensitive quando estão dentro do .jar

Ah, e tire esse monte de Teste.this.algumMétodo.
Se você está na classe chame o método diretamente, ou então this.algumMétodo se vc acha que fica mais claro.

[]´s

Olha eu uso esse código pra gerar o relário. Não sei onde esta o seu erro mas talvez isso ajude :

try{
            Connection con = bd.getConnection();// sua Conexão
            HashMap parametros = new HashMap();//parametros
            parametros.put("USER", "teste");//parametros
            JasperPrint  jp = JasperFillManager.fillReport("./jasper/relatorio_final.jasper", parametros, con);//JasperPrint com 3 parametros, caminho do relatorio, parametros, e a conexão
            JasperViewer jrv = new JasperViewer(jp,false); // O JasperViewer com o JasperPrint como Parametro
            jrv.setVisible(true);// E a visualização
        }catch(Exception e){
            e.printStackTrace();
        }

Se fizer tudo certinho não tem como dar erro.

[quote=davidbuzatto]É assim:

InputStream is = getClass().getResourceAsStream( "/Relatorios/a.jasper" );

Cuidado que o nome do pacote e do arquivo é case sensitive quando estão dentro do .jar

Ah, e tire esse monte de Teste.this.algumMétodo.
Se você está na classe chame o método diretamente, ou então this.algumMétodo se vc acha que fica mais claro.

[]´s[/quote]

rsrs esses Teste.this é pq estou na classe local de método, no evento de um botao.

[quote=evertonsilvagomesjava]Alguem sabe pq o null?

Fazendo os teste nada acusa o nullPointer:

[code]InputStream path = Teste.this.getClass().getResourceAsStream("\Relatorios\a.jasper");
String caminho = “C:\CVM\Produtos\TesteSwing\src\Relatorios\a.jasper” ;
System.out.println(caminho);
System.out.println(path); // imprime ok o toString
System.out.println(Teste.this.getSource());

					//JasperReport relatorio = JasperCompileManager.compileReport("C:\CVM\Produtos\TesteSwing\src\Relatorios\a.jrxml");   

																				
					JasperPrint print = JasperFillManager.fillReport(path, new HashMap(), // aqui me gera null nao sei da onde
																  Teste.this.getSource());
					
					JasperViewer.viewReport(print,true);[/code][/quote]

Você não precisa colocar ‘\’ na InputStream. Creio que seja isso que esteja dando null.
Tente fazer assim

InputStream IMAGEM_INICIO = getClass().getResourceAsStream("/br/com/sistemaX/imagens/Relatorio.png");

No seu caso vc irá apontar pra onde está seu relatório. Coloque o seu relatório dentro de um pacote no seu projeto e faça como mostrado acima.

nussa consegui resolver, era problema de versão do ireport + jasper. Vlw a todos

Tá ai uma coisa que eu NÃO gosto do jasper, a compatibilidade de versões, é como se fosse cada versão um novo sistema. compatibilidade com versão anterior praticamente não existe!!!

Estou com o mesmo problema, estou usando o iReport 4.5 e criei o arquivo jasper também com a mesma versão.

Toda hora acontece NullPointException.

Segue meu código.



package br.com.sein.relatorio;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;


public class GerarRelatorio extends HttpServlet{
		
		private final static long serialVersionUID = 1L;
		
	
		
		protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
			
		
			
			String cod = request.getParameter("imprimir_analise");        
		
			
//		
			//ServletContext contex = this.getServletContext();
//			
//			String nomeDoArquivoCopilado = contex.getRealPath(nomeDoRelatorio);
			
			ServletContext context = this.getServletConfig().getServletContext();
			
			File jasper = new File( context.getRealPath("WebContent/Relatorios/Sca-version7.jasper"));
		
		try{
		
			
			JasperReport relatorioCompilado = (JasperReport)JRLoader.loadObject(jasper);
					
					//JRLoader.loadObject(arquivo);
			
			Map<String, String> parametros = new HashMap<String, String>();
			
			
			parametros.put("parametro", cod);
					  
		    
		    
		    JasperPrint relatorioFinal = JasperFillManager.fillReport(relatorioCompilado, parametros);
		    
		    response.setContentType("application/pdf;charset=UTF-8");
		    
		    //Adequado para se enviar dados binários para o browser.
		    ServletOutputStream out = response.getOutputStream();
		
		    JasperExportManager.exportReportToPdfStream(relatorioFinal,out);
		    out.flush();
		
		}catch(IOException e){
			response.setContentType("text/plain");
			PrintWriter printWriter = response.getWriter();
			e.printStackTrace(printWriter);
			throw new ServletException(e);
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		}
}