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:
[quote]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)[/quote]
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
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…
Como eu adiciono?? :oops:
Da mesma forma que você adicionou as mencionadas acima. 
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]
Coloquei as bibliotecas da forma como vc me instruiu. Daí deu o seguinte erro agora:
[quote]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
[/quote]
Preciso resolver isso com urgência e não sei mais o que fazer.
Obrigada pela atenção!
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
mrsilvap, seguinte. Dentro do seu try, faça o seguinte:
[code]
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();
} [/code]
Veja este tópico, tive um problema semelhante ao seu.
Resolveu?
[quote=“kopcheski”]mrsilvap, seguinte. Dentro do seu try, faça o seguinte:
[code]
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();
} [/code]
Veja este tópico, tive um problema semelhante ao seu.
Resolveu?[/quote]
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
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á.