Erro Relatório iReport

10 respostas
M

Olá Pessoal!
Criei um relatório no iReport 1.2.6. Quando rodo no eclipse ele funciona normalmente, porém quando crio o arquivo jar ele dá o seguinte erro:

Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JasperFillManager at br.com.sstintas.controller.JasperReportControllerVenda.geraRelatorioV
endas(JasperReportControllerVenda.java:25)

Código do JasperReportControllerVenda:

package br.com.sstintas.controller;

import java.sql.Connection;
import java.util.Map;

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.view.JasperViewer;

public class JasperReportControllerVenda {
	
	private static JasperReport jr;
	private static JasperPrint jp;
	
	public JasperReportControllerVenda() {
		super();
	}
	
	public static void geraRelatorioVendas(Connection c, Map params) {
		
		try {
			
			jp = JasperFillManager.fillReport("relatorios/relatorioVenda.jasper", params, c);
			JasperExportManager.exportReportToPdfFile(jp, "relatorios/relatorioVenda.pdf");
			JasperViewer.viewReport(jp, false);
				
		} catch(Exception ex) {
			ex.printStackTrace();
		}
	}

}

Tenho as seguintes bibliotecas adicionadas no eclipse:
xml-apis.jar
antlr-2.7.5.jar
commons-beanutils-1.5.jar
commons-collections-2.1.jar
commons-dbcp-1.2.1.jar
commons-digester-1.7.jar
commons-javaflow-20060411.jar
commons-logging-1.0.2.jar
commons-logging-api-1.0.2.jar
commons-pool-1.3.jar
dom4j-1.6.jar
ireport.jar
jasperreports-1.2.6.jar
log4j-1.2.8.jar
itext-1.3.1.jar
jdt-compiler-3.1.1.jar

Tem um arquivo na pasta lib chamado JasperFillManager.java
Teria que usar esse arquivo em algum lugar?

Minha aplicação é desktop
Windows XP
Banco de Dados PostgreSQL

Agradeço as sugestões

10 Respostas

M

Alguma sugestão??

C

Está faltando essa classe no seu .jar: net/sf/jasperreports/engine/JasperFillManager

Você tem todos esse .jar no seu projeto no eclipse e no seu .jar provavelmente você não deve ter adiciona os .jar(s) utilizados na sua aplicação no seu .jar. Todos os .jar adicionais em seu projeto deve estar adicionado em seu .jar, caso contrário dará esse erro de classe nao encontrada…

M

Como eu adiciono?? :oops:

K

Da mesma forma que você adicionou as mencionadas acima. :slight_smile:

C

Olá, pela IDE eu não sei, mas vc pode fazer isso na mão. Quando eu precisei adicionar novas .jar dentro do meu próprio .jar, coloquei no manifest, setei no classpath da minha própria aplicação jar onde deixei minha biblioteca .jar por exemplo connector_mysql.jar

Class-Path: connector_mysql.jar

E deixei o .jar na raiz do projeto.

  • agenda
    ++ aplicação
    ++ connector_mysql.jar

Tem esse tutorial que ajuda a criar um jar…

http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=7[/url]

M

Coloquei as bibliotecas da forma como vc me instruiu. Daí deu o seguinte erro agora:

Microsoft Windows XP [versão 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Windows XP>cd desktop\sitema

C:\Documents and Settings\Windows XP\Desktop\sitema>java -jar sstintas.jar

121.0

0.0

84

java.io.FileNotFoundException: relatorios\relatorioVenda.jasper

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

)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa

nager.java:232)

at br.com.sstintas.controller.JasperReportControllerVenda.geraRelatorioV

endas(JasperReportControllerVenda.java:25)

at br.com.sstintas.view.VendaView$4.actionPerformed(VendaView.java:986)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour

ce)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
NESTED BY :

java.io.FileNotFoundException: relatorios\relatorioVenda.jasper

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

)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa

nager.java:232)

at br.com.sstintas.controller.JasperReportControllerVenda.geraRelatorioV

endas(JasperReportControllerVenda.java:25)

at br.com.sstintas.view.VendaView$4.actionPerformed(VendaView.java:986)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour

ce)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
NESTED BY :

net.sf.jasperreports.engine.JRException: relatorios\relatorioVenda.jasper

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

)

at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa

nager.java:232)

at br.com.sstintas.controller.JasperReportControllerVenda.geraRelatorioV

endas(JasperReportControllerVenda.java:25)

at br.com.sstintas.view.VendaView$4.actionPerformed(VendaView.java:986)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour

ce)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Caused by: java.io.FileNotFoundException: relatorios\relatorioVenda.jasper
… 28 more

Preciso resolver isso com urgência e não sei mais o que fazer.
Obrigada pela atenção!

C

Olá, o JVM não está encontrando a o arquivo que você setou em sua classe. Não encontrou o relatório relatorioVenda.jasper no diretório relatorios. Verifica se ele existe… Coloque o código e seu manifest que fica mais fácil da gente poder te ajudar

K

mrsilvap, seguinte. Dentro do seu try, faça o seguinte:

try {
         
         jp = JasperFillManager.fillReport(SuaClasse.class.getResourceAsStream("/pacote/seuRelatorio.jasper"), params, c);
         JasperExportManager.exportReportToPdfFile(jp, "relatorios/relatorioVenda.pdf");
         JasperViewer.viewReport(jp, false);
            
      } catch(Exception ex) {
         ex.printStackTrace();
      }

Veja este tópico, tive um problema semelhante ao seu.

Resolveu?

M
"kopcheski":
mrsilvap, seguinte. Dentro do seu try, faça o seguinte:
try {
         
         jp = JasperFillManager.fillReport(SuaClasse.class.getResourceAsStream("/pacote/seuRelatorio.jasper"), params, c);
         JasperExportManager.exportReportToPdfFile(jp, "relatorios/relatorioVenda.pdf");
         JasperViewer.viewReport(jp, false);
            
      } catch(Exception ex) {
         ex.printStackTrace();
      }

Veja este tópico, tive um problema semelhante ao seu.

Resolveu?

Que classe é essa: SuaClasse.class

Segue o código do meu Manifest:
Manifest-Version: 1.0
Main-Class: br.com.sstintas.view.AcessoView
Class-Path: lib/postgresql-8.0.309.jdbc3.jar lib/postgresql-8.0.309.jdbc2.jar lib/postgresql-8.0.309.jdbc2ee.jar lib/antlr-2.7.5.jar lib/commons-beanutils-1.5.jar lib/commons-collections-2.1.jar lib/commons-dbcp-1.2.1.jar lib/commons-digester-1.7.jar lib/commons-javaflow-20060411.jar lib/commons-logging-1.0.2.jar lib/commons-logging-api-1.0.2.jar lib/commons-pool-1.3.jar lib/dom4j-1.6.jar lib/ireport.jar lib/jasperreports-1.2.6.jar lib/log4j-1.2.8.jar lib/itext-1.3.1.jar lib/jdt-compiler-3.1.1.jar

O arquivo está na pasta relatorios e se chama relatorioVenda.jasper

K

SuaClasse.class é a classe que você tem esse código. Para simplificar, use apenas getClass() ao invés de SuaClasse.class. O restante, continua da forma que te passei.

Claro, isso se seus .jasper estiver no mesmo pacote que sua classe. E nao tiver, coloque lá.

Criado 23 de setembro de 2006
Ultima resposta 26 de set. de 2006
Respostas 10
Participantes 3