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.
Jasper report não roda
10 Respostas
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?
“org/apache/commons/collections/ReferenceMap”…qual “.jar” tenho que baixar para atualizar isso?
commons-collections-1.1 se não me engano resolve isso.
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?
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.IdclienteAS cliente_Idcliente, "
+ "cliente.apelidoAS cliente_apelido, "
+ "cliente.nomeAS cliente_nome, "
+ "cliente.enderecoAS cliente_endereco, "
+ "cliente.rgAS cliente_rg "
+ “FROM "
+ "clientecliente”;
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.
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.
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?
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!
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)
Valeu pessoal, consegui resolver aqui. Eram problemas com as bibliotecas.