Erro Ireport

Está ocorrendo o seguinte erro na minha compilação:

Exception in thread "main" java.lang.NullPointerException at br.com.supercred.consultas.Relatorio.geraRelatorio(Relatorio.java:38) at br.com.supercred.consultas.Relatorio.main(Relatorio.java:44) Java Result: 1 CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)

MINHA CLASSE É :

public class Relatorio { private Connection getConnection() throws ClassNotFoundException, SQLException{ String url = "jdbc:mysql://localhost:3306/bd_supercred"; Class.forName( "com.mysql.jdbc.Driver" ); return (Connection) DriverManager.getConnection(url, "root", "root" ); } /* Gera Relatorio e visualiza-o */ public void geraRelatorio( ) throws JRException, Exception { Connection con = getConnection( ); Statement stm = con.createStatement( ); String query = "select * from tb_pmmg"; ResultSet rs = stm.executeQuery( query ); JRResultSetDataSource jrRS = new JRResultSetDataSource( rs ); Map parameters = new HashMap(); String str = this.getClass().getResource("pmmgrelatorios.jasper").getFile();//ERRO AQUI JasperFillManager.fillReportToFile( str , parameters, jrRS ); JasperExportManager.exportReportToPdfFile( "pmmgrelatorios.jrprint" ); JasperViewer.viewReport( "pmmgrelatorios.pdf", false ); } public static void main(String[] args) throws JRException, Exception { new Relatorio().geraRelatorio(); } }

Se tiver outro jeito de fazer relatórios, peço gentilmente a ajuda.

o que retorna this.getClass().getResource(“pmmgrelatorios.jasper”).getFile(); ? esse pmmgrelatorios.jasper existe?
flw

sim, o .jasper existe está na raíz do projeto, não sei porque não encontra ele, segui um tutorial que encontrtei, estou tentando aqui, mas não estou conseguindo, será que tem me ajudar dando um exemplo de como gerar o relatório na aplicação Java? OBs: no Ireport está funcionando corretamente.

pode ser problema no caminho, coloque o caminho absoluto do report para testar…

Coloquei o caminho

String str = this.getClass().getResource("C:\\Users\\Thiago\\Desktop\\Super\\src\\pmmgrelatorios.jasper").getFile();

Ocorreu o mesmo erro!Tem outra maneira mais fácil de fazer?

quem é na classe Relatorio.java linha 38?

Coloca essa linha aqui

o objeto usado nela está null

Ata, descobri quem era a linha

Coloca esse relatório em outro lugar, como numa pasta no c: e testa

Cara isso tá muito louco, coloquei no c:/pmmgrelarorios.jasper e nada, ocorre a mesma exception. Estou ficando louco com isso, putz…

E se vc fizer direto
Ao invés disso

String str = this.getClass().getResource("C:\\Users\\Thiago\\Desktop\\Super\\src\\pmmgrelatorios.jasper").getFile();  

Fazer isso

String str = "C:\\Users\\Thiago\\Desktop\\Super\\src\\pmmgrelatorios.jasper";  

NAO FUNCIONOU!!! TEM UM JEITO MAIS FÁCIL DE DESENVOLVER UM RELATÓRIO?

que isso… eu acho q esse é o jeito mais facil de desenvolver relatorios, se vc der um print em str imprime oq?

Mudei minha classe, mas está dando erro, no ireport eu consigo gerar o relatório, funciona perfeitamente, minha classe:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.supercred.consultas;

import java.sql.Connection;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;

import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class Relatorio4
{
/* Driver do banco de dados, URL, usuário e senha do banco de dados */
static final String JDBC_DRIVER = “com.mysql.jdbc.Driver”;
static final String DATABASE_URL = “jdbc:mysql://localhost:3306/bd_supercred”;
static final String USER = “root”;
static final String PASSWORD = “root”;

/* Conecta-se ao banco de dados e retorna o objeto da conexão /
private static Connection getConnection() throws
ClassNotFoundException, SQLException
{
/
Carrega o driver do postgreSQL */
Class.forName(JDBC_DRIVER);

/* Cria um objeto de conexão */
Connection connection = DriverManager.getConnection(DATABASE_URL, USER, PASSWORD);
return connection;
}

/* Gera relatório /
public void gerarRelatorio() throws
JRException, Exception
{
/
Chama o método getConnection para obter um objeto Connection,
utiliza-o para obter um objeto Statement e realiza uma consulta
armazendo o resultado em um ResultSet
*/
Connection connection = getConnection();
Statement statement = connection.createStatement();
ResultSet result = statement.executeQuery(“SELECT * FROM banco;”);

/* Cria um JRResultSetDataSource com o resultado da consulta */
JRResultSetDataSource jrrs = new JRResultSetDataSource(result);

/* Cria um HashMap com parâmetros do relatório.
Caso não seja atribuído algum valor aos parâmetros estes
assumem o valor padrão.
*/
Map parametros = new HashMap();

/* Cria um arquivo .jrprint (relatório preenchido) utilizando o
Relatorio.jasper (design), os parâmetros e o
JRResultSetDataSource que é o resultado da consulta.
*/
JasperPrint jp = JasperFillManager.fillReport(“c:\bancos.jasper”, parametros, jrrs);

/* Exibe o relatório */
JasperViewer.viewReport(jp);
}

public static void main(String[] args) throws
JRException, Exception
{
new Relatorio4().gerarRelatorio();
}
}[/code]

Agora está dando seguinte erro:

11/10/2010 20:02:38 br.com.supercred.view.FormPMMG btnImprimirActionPerformed SEVERE: null net.sf.jasperreports.engine.JRException: Error loading object from file : c:\bancos.jasper at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:92) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540) at br.com.supercred.consultas.Relatorio4.gerarRelatorio(Relatorio4.java:69) at br.com.supercred.view.FormPMMG.btnImprimirActionPerformed(FormPMMG.java:1102) at br.com.supercred.view.FormPMMG.access$1900(FormPMMG.java:48) at br.com.supercred.view.FormPMMG$11.actionPerformed(FormPMMG.java:884) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6263) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6028) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783) at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280) at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:87) ... 30 more

mudei até o meu select, tbm testei ele no mysql;

ResultSet rs = st.executeQuery("SELECT  banco.`codigo` AS banco_codigo,banco.`nome` AS banco_nome,banco.`cidade` AS banco_cidade,banco.`estado` AS banco_estado FROM `banco` banco ORDER BY banco.`nome`");

Não sei porque não consegue acessar meu arquivo.jasper, tentei o caminho absoluto, mudei de lugar, não adianta, aff, o que será isso?

Cara, não faço a menor idéia do que está acontecendo

Mas o seu arquivo jrxml compila normalmente?

Não tem nenhum caractere estranho nele?

vai no arquivo pelo prompt de comando e fz type relatorio.jrxml

Esse erro de sequencia inválida, eu tive uma vez qdo eu tinha um arquivo com um caractere que só aparecia pelo prompt de comando, ele me deu um dia de dor de cabeça, e pior q era o primeiro caractere