Problemas na criação de relatórios com o jasperreports

5 respostas
I

Pessoal, eu criei um relatório com o i-report baseado em uma consulta sql a um banco postgre, mas não passei nemnhum parâmetro para esse relatório (O relatório é impresso somente com base na sql estática).
Compilei o relatório ,criei um .jasper e executei de dentro do i-report … até aí tudo bem; o relatório é exibido corretamente.

O problema é que quando eu tento rodar o relatório de um programa que eu fiz (compilar o .jasper e executar) ele dá o sequinte erro:

Exception in thread main java.lang.NoClassDefFoundError: org/apache/commons/loggin/LogFactory

at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:123)

at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:111)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:222)

at net.sf.jasperreports.engine.JasperManager.fillReport(JasperManager.java:741)

at VerRelat.main(VerRelat.java:23)

Eu tô compilando esse programa direto do meu “c:”, coloquei a pasta do jasperreports (“c:\net\sf…”) tambem na minha raiz e coloquei tambem na raiz o driver jdbc do postgresql. Ao final eu rodo o programa com o seguinte comando : java -classpath c:\ VerRelat

As minhas variáveis de ambiente são:
CLASSPATH = C:\j2sdk1.4.2_07
JAVA_HOME = C:\j2sdk1.4.2_07
PATH = C:\j2sdk1.4.2_07\bin;%java_home\lib

O MEU PROGRAMA É ASSIM:

import java.util.<em>;

import java.sql.</em>;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.view.JasperViewer;

public class VerRelat {

public static void main(String[] args) {

String driver = org.postgresql.Driver;

String url = jdbc:postgresql://192.168.100.5:5432/ateste”;

String user = egen;

String password = egen;

JasperReport relatorio = null;

JasperPrint impressao = null;

JasperViewer viewer = null;

HashMap parametros = new HashMap();

Connection connection = null;

try {

Class.forName(driver);

connection = DriverManager.getConnection(url, user, password);

relatorio  = JasperManager.loadReport(c:/analitico.jasper);

<a href="//parametros.put">//parametros.put</a>(“uf”, “RJ”);

impressao = JasperManager.fillReport(relatorio, parametros, connection);

/* Cria o visualizador de imporessão*/

viewer = new JasperViewer(impressao, true);

viewer.show();

connection.close();	

} catch (Exception e) {

e.printStackTrace();

}

}

}

5 Respostas

_fs

Este erro:

Exception in thread "main" java.lang.NoClassDefFoundError:

indica que uma classe … não foi encontrada hehe

Coloque o jar do log4j no classpath da sua aplicação.

mister_m

LIPE:
Este erro:

Exception in thread "main" java.lang.NoClassDefFoundError:

indica que uma classe … não foi encontrada hehe

Coloque o jar do log4j no classpath da sua aplicação.

Na verdade, o problema dele é que o commons-logging*.jar não está no classpath. Isso se ele digitou errado o nome da classe:

iatan:

Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/loggin/LogFactory

Note o pacote loggin, sem g… :stuck_out_tongue:

I

Gente, eu coloquei os arquivos que vcs mandaram dentro do classpath da minha aplicação e mesmo assim continuo tendo a mesma mensagem de erro descrita na primeira mensagem quando tento rodar o meu programa.
Alguem tem outra idéia de o que possa estar faltando? O problema está na linha do fillReport porque se eu tento exibir um relatório pronto (a partir do .jrprint), usando somente o JRView, ele me mostra o relatório de boa. Mas quando eu tento compilar o relatório no meu programa para criar o .jrprint ele dá essas mensagens de erro.
Podem me ajudar por favor?
O meu propósito sería de fazer esse relatório ser compilado e exibido atráves de uma página jsp.

mister_m

iatan:
Gente, eu coloquei os arquivos que vcs mandaram dentro do classpath da minha aplicação e mesmo assim continuo tendo a mesma mensagem de erro descrita na primeira mensagem quando tento rodar o meu programa.

Certeza de que é a mesma mensagem? Isso é muito estranho.

Você mencionou sobre o “classpath da sua aplicação”, mas depois disse que sua aplicação é web. Como você colocou esse jar no classpath?

I

O que eu quis dizer é que “posteriormente” eu vou migrar essa aplicação para jsp. Tô testando ela em desktop primeiro prá ver se dá certo, mas tô esbarrando nesse probleminha… Eu tô usando o java 1.4.2.07 tem algum problema?

Isso tá realmente muito estranho porque o i-report compila o relatório para exibí-lo correto? Eu percebí que o i-report mostra uma mensagem do tipo “filling report” … então poruque no i-repport funciona e de fora dele não funciona.

As mensagens de erro são as mesmas.

Criado 4 de abril de 2005
Ultima resposta 5 de abr. de 2005
Respostas 5
Participantes 3