Jasper report não roda

10 respostas
T

Pessoal, no meu programa, ainda em fase de testes, o relatório abria normalmente. Após atualizar o netbeans para a versão 7.1 e também o jasperreports 4.5.1, parou de funcionar. Existe algum problema de compatibilidade? …o que devo fazer?
Obrigado.

10 Respostas

felipeaqueiroz

O Jasper deve estar com alguma incompatibilidade de bibliotecas.

Qual a versão do jasperreports você compilou o relatório que abria?
Qual o arquivo jar do jasperreports você está usando no seu classpath?

T

“org/apache/commons/collections/ReferenceMap”…qual “.jar” tenho que baixar para atualizar isso?

drsmachado

commons-collections-1.1 se não me engano resolve isso.

T
public void printRelatorio() throws JRException {
    Connection con = conection( );
    Statement stm = null;
    try {
        stm = (Statement) con.createStatement( );
    } catch (SQLException ex) {
        Logger.getLogger(metodos.class.getName()).log(Level.SEVERE, null, ex);
    }
    String query = "SELECT "
            + "cliente.`Idcliente` AS cliente_Idcliente, "
            + "cliente.`apelido` AS cliente_apelido, "
            + "cliente.`nome` AS cliente_nome, "
            + "cliente.`endereco` AS cliente_endereco, "
            + "cliente.`rg` AS cliente_rg "
            + "FROM "
            + "`cliente` cliente";
    ResultSet rs = null;
    try {
        rs = stm.executeQuery( query );
    } catch (SQLException ex) {
        Logger.getLogger(metodos.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    /* implementação da interface JRDataSource para DataSource ResultSet */
    JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
    
    /* HashMap de parametros utilizados no relatório. Sempre instanciados */
    Map parameters = new HashMap();
   
    
    /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
    String file = getClass().getResource("contaCliente.jasper").toString();//"contaCliente.jasper"
    JasperFillManager.fillReportToFile( file, parameters, jrRS );
    
    /* Exporta para o formato PDF */
    JasperExportManager.exportReportToPdfFile( "contaCliente.jrprint" );
    /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem
    a necessidade do .jrprint */
    // JasperRunManager.runReportToPdfFile("BibliotecaPessoal.jasper", parameters, jrRS);
    /* Visualiza o relatório em formato PDF */
    JasperViewer.viewReport( "contaCliente.pdf", false );

}

Ao executar, retorna a seguinte mensagem de erro: Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
Alguém sabe pq?

felipeaqueiroz

teo_itinga:
public void printRelatorio() throws JRException {
Connection con = conection( );
Statement stm = null;
try {
stm = (Statement) con.createStatement( );
} catch (SQLException ex) {
Logger.getLogger(metodos.class.getName()).log(Level.SEVERE, null, ex);
}
String query = "SELECT "
+ "cliente.Idcliente AS cliente_Idcliente, "
+ "cliente.apelido AS cliente_apelido, "
+ "cliente.nome AS cliente_nome, "
+ "cliente.endereco AS cliente_endereco, "
+ "cliente.rg AS cliente_rg "
+ “FROM "
+ "cliente cliente”;
ResultSet rs = null;
try {
rs = stm.executeQuery( query );
} catch (SQLException ex) {
Logger.getLogger(metodos.class.getName()).log(Level.SEVERE, null, ex);
}

/* implementação da interface JRDataSource para DataSource ResultSet */
    JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
    
    /* HashMap de parametros utilizados no relatório. Sempre instanciados */
    Map parameters = new HashMap();
   
    
    /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
    String file = getClass().getResource("contaCliente.jasper").toString();//"contaCliente.jasper"
    JasperFillManager.fillReportToFile( file, parameters, jrRS );
    
    /* Exporta para o formato PDF */
    JasperExportManager.exportReportToPdfFile( "contaCliente.jrprint" );
    /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem
    a necessidade do .jrprint */
    // JasperRunManager.runReportToPdfFile("BibliotecaPessoal.jasper", parameters, jrRS);
    /* Visualiza o relatório em formato PDF */
    JasperViewer.viewReport( "contaCliente.pdf", false );

}

Ao executar, retorna a seguinte mensagem de erro: Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
Alguém sabe pq?

Esse código funcionava antes de atualizar? Se sim, parece que é mesmo alguma coisa relacionada a bibliotecas…

No seu classpath, tem algum jar com o nome ‘jasperreports-X.Y.Z.jar’? Se a versão do jar não corresponder à versão do jasper que você compilou o relatório, tenta usar a mesma biblioteca no seu classpath.

Agora se esse código começou a aparecer agora, você já tentou debugar e ver o que está vindo nulo?
Também seria bom colocar o stack trace completo, para a gente dar uma olhada.

T

essa é uma das maneiras que funcionava antes de atualizar o netbeans.
parece que o erro é na linha "String file = getClass().getResource(“contaCliente.jasper”).toString();//“contaCliente.jasper”…parece que não encontra o arquivo.
tentei mudando de local, mas não dá certo.
|-maia
|-contaCliente.jasper
|-main.java
|-maia.model
|-maia.view
|-maia.view.report

antes, o arquivo esta na pasta report, mas por tentativa de reparar o erro, acabei mudando a a pasta raiz do programa “maia”.
acho que o erro pode esta na referência com o getResource(), mas toh entendo isso.

T

Pessoal, até agora não consegui resolver este problema. Parece que não lê o arquivo “contaCliente.jasper”. E ele se encontra no mesmo local do arquivo main.java.

public void printRelatorio() throws JRException {
    Connection con = conection( );
    Statement stm = null;
    try {
        stm = (Statement) con.createStatement( );
    } catch (SQLException ex) {
        Logger.getLogger(metodos.class.getName()).log(Level.SEVERE, null, ex);
    }
    String query = "SELECT "
            + "cliente.`Idcliente` AS cliente_Idcliente, "
            + "cliente.`apelido` AS cliente_apelido, "
            + "cliente.`nome` AS cliente_nome, "
            + "cliente.`endereco` AS cliente_endereco, "
            + "cliente.`rg` AS cliente_rg "
            + "FROM "
            + "`cliente` cliente";
    ResultSet rs = null;
    try {
        rs = stm.executeQuery( query );
    } catch (SQLException ex) {
        Logger.getLogger(metodos.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    JRResultSetDataSource jrRS = new JRResultSetDataSource( rs );
    
    Map parameters = new HashMap();

    ClassLoader loader = this.getClass().getClassLoader();
    InputStream stream = loader.getResourceAsStream("contaCliente.jasper");

    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(stream);

    JasperPrint jasperPrint = JasperFillManager.fillReport(stream, parameters, jrRS);
    

    JasperViewer viewer = new JasperViewer(jasperPrint, false);
    viewer.setVisible(true);

}

Retornando o erro: Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
na linha -> JasperReport jasperReport = (JasperReport) JRLoader.loadObject(stream);

Alguém pode me ajudar?

T

Pessoal, não estou conseguindo exibir o meu relatório.
Já tentei de várias formas, mas tah dando sempre o mesmo erro, parece que é sobre a referência do arquivo jasper(não é carregado).
alguém tem um código que funcione bem para me enviar.
Estou precisando muito, pois faz quase uma semana que estou pesquisando e não consigo.
Obrigado!

T
Aparece o erro a seguir:

Exception in thread main java.lang.NullPointerException

at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:601)

at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:991)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)

at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)

at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)

at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)

at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)

at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)

at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:88)

at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:64)

at maia.ReportManager.clientes(ReportManager.java:118)

at maia.Maia.teste(Maia.java:78)

at maia.Maia.main(Maia.java:54)

Java Result: 1

CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)
T

Valeu pessoal, consegui resolver aqui. Eram problemas com as bibliotecas.

Criado 16 de maio de 2012
Ultima resposta 19 de mai. de 2012
Respostas 10
Participantes 3