iReport + Classpath

9 respostas
M

Olá, pessoal!

Gostaria de saber se alguém daqui sabe quais são as bibliotecas do Jasper/iReport que contém as classes JRLoader e JasperFillManager. Estou usando o iReport 1.2.6.
Pois não consigo gerar o relatório a partir do meu arquivo .jar, pois essas classes não estão no classpath.
Se alguém puder ajudar, agradeço!!

9 Respostas

C

QUal o erro ?

C

Coloca o jar do Jasper junto com a sua aplicação (seu jar).

C

Pedi o erro pra ele, pois pode ser que o arquivo .jarsper não esteja sendo encontrado.

C

Pedi o erro pra ele, pois pode ser que o arquivo .jarsper não esteja sendo encontrado.

É o que parece.

M
esse é o erro que dá
Microsoft Windows XP [versão 5.1.2600]
(C) 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
java.io.FileNotFoundException: relatorios\etiquetaAtacado.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.JasperReportControllerEtiquetaAtacado.gera
RelatorioEtiquetaAtacado(JasperReportControllerEtiquetaAtacado.java:25)
        at br.com.sstintas.view.RelatorioEtiquetasView$3.actionPerformed(Relator
ioEtiquetasView.java:131)
        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\etiquetaAtacado.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.JasperReportControllerEtiquetaAtacado.gera
RelatorioEtiquetaAtacado(JasperReportControllerEtiquetaAtacado.java:25)
        at br.com.sstintas.view.RelatorioEtiquetasView$3.actionPerformed(Relator
ioEtiquetasView.java:131)
        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\etiquetaAtacado.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.JasperReportControllerEtiquetaAtacado.gera
RelatorioEtiquetaAtacado(JasperReportControllerEtiquetaAtacado.java:25)
        at br.com.sstintas.view.RelatorioEtiquetasView$3.actionPerformed(Relator
ioEtiquetasView.java:131)
        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\etiquetaAtacado.jasper
        ... 28 more
No meu arquivo manifest faço da seguinte forma:
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/xml-apis.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/jcommon-1.0.0.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/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

e todas essas bibliotecas estão na pasta lib. Se incluo mais alguma biblioteca dá um erro na hora de gerar o jar de linha muito longa.

Preciso por o sistema para funcionar mas o relatório não está abrindo o que está me gerando um grande problema.

Grata pelas sugestões

Se alguém puder ajudar.

C
Use o getClass pra recuperar isso, depois passe a URL pra o seu JasperReport
private URL url = 
getClass().getResource("/br/com/sicredi/urdcnorte/sisrel/model/services/reports/relatorio.jasper");

JasperReport jr = (JasperReport) JRLoader.loadObject( url );

:joia:

M

[color="darkred"]Minha aplicação é desktop[/color]

Para gerar o relatório uso a seguinte classe:
package br.com.sstintas.controller;

import java.net.URL;
import java.sql.Connection;

import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;

public class JasperReportControllerEtiquetaAtacado {
	
	private static JasperReport jr;
	private static JasperPrint jp;
	
	public JasperReportControllerEtiquetaAtacado() {
		super();
	}
	
	public void geraRelatorioEtiquetaAtacado(Connection c) {
		
		try {
			
			URL url = getClass().getResource("relatorios/etiquetaAtacado.jasper");
			jr = (JasperReport) JRLoader.loadObject( url );
			
		//	jp = JasperFillManager.fillReport("relatorios/etiquetaAtacado.jasper", null, c);
			//JasperExportManager.exportReportToPdfFile(jp, "relatorios/etiquetaAtacado.pdf");
			//JasperViewer.viewReport(jp);
				
		} catch(Exception ex) {
			ex.printStackTrace();
		}
	}

}
Para chamá-la uso essa:
package br.com.sstintas.view;

import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Event;
import java.awt.BorderLayout;
import javax.swing.KeyStroke;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JDialog;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;

import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;

import br.com.sstintas.controller.JasperReportControllerEtiquetaAtacado;
import br.com.sstintas.controller.JasperReportControllerEtiquetaAtacadoPromocao;
import br.com.sstintas.controller.JasperReportControllerEtiquetaFabrica;
import br.com.sstintas.controller.JasperReportControllerEtiquetaFabricaAtacado;
import br.com.sstintas.controller.JasperReportControllerEtiquetaFabricaAtacadoPromocao;
import br.com.sstintas.controller.JasperReportControllerEtiquetaFabricaComplemento;
import br.com.sstintas.controller.JasperReportControllerEtiquetaPromocao;
import br.com.sstintas.controller.JasperReportControllerVenda;
import br.com.sstintas.modelo.bd.GerenciadorBD;

public class RelatorioEtiquetasView extends JFrame {

	private JPanel jContentPane = null;

	private JButton btEtiquetaFabrica = null;

	private JButton btFabricaAtacado = null;

	private JButton btAtacado = null;

	private JButton btPromocao = null;

	private JButton btAtacadoPromocao = null;

	private JButton btFabricaComplemento = null;

	private JButton btFabricaAtacadoPromocao = null;

	private JLabel lTituloEtiquta = null;

	public RelatorioEtiquetasView() throws HeadlessException {
		super();
		// TODO Auto-generated constructor stub
		initialize();
	}

	public RelatorioEtiquetasView(GraphicsConfiguration arg0) {
		super(arg0);
		// TODO Auto-generated constructor stub
		initialize();
	}

	public RelatorioEtiquetasView(String arg0) throws HeadlessException {
		super(arg0);
		// TODO Auto-generated constructor stub
		initialize();
	}

	public RelatorioEtiquetasView(String arg0, GraphicsConfiguration arg1) {
		super(arg0, arg1);
		// TODO Auto-generated constructor stub
		initialize();
	}

	/**
	 * This method initializes btEtiquetaFabrica	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtEtiquetaFabrica() {
		if (btEtiquetaFabrica == null) {
			btEtiquetaFabrica = new JButton();
			btEtiquetaFabrica.setBounds(new java.awt.Rectangle(66,41,71,20));
			btEtiquetaFabrica.setText("Fábrica");
			btEtiquetaFabrica.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
			btEtiquetaFabrica.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JasperReportControllerEtiquetaFabrica.geraRelatorioEtiquetaFabrica(GerenciadorBD.getConexao());
				}
			});
		}
		return btEtiquetaFabrica;
	}

	/**
	 * This method initializes btFabricaAtacado	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtFabricaAtacado() {
		if (btFabricaAtacado == null) {
			btFabricaAtacado = new JButton();
			btFabricaAtacado.setText("Fábrica e Atacado");
			btFabricaAtacado.setLocation(new java.awt.Point(21,78));
			btFabricaAtacado.setSize(new java.awt.Dimension(122,20));
			btFabricaAtacado.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
			btFabricaAtacado.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JasperReportControllerEtiquetaFabricaAtacado.geraRelatorioEtiquetaFabricaAtacado(GerenciadorBD.getConexao());
				}
			});
		}
		return btFabricaAtacado;
	}

	/**
	 * This method initializes btAtacado	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtAtacado() {
		if (btAtacado == null) {
			btAtacado = new JButton();
			btAtacado.setLocation(new java.awt.Point(203,41));
			btAtacado.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
			btAtacado.setText("Atacado");
			btAtacado.setPreferredSize(new java.awt.Dimension(71,20));
			btAtacado.setSize(new java.awt.Dimension(74,20));
			btAtacado.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JasperReportControllerEtiquetaAtacado.geraRelatorioEtiquetaAtacado(GerenciadorBD.getConexao());
				}
			});
		}
		return btAtacado;
	}

	/**
	 * This method initializes btPromocao	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtPromocao() {
		if (btPromocao == null) {
			btPromocao = new JButton();
			btPromocao.setLocation(new java.awt.Point(343,41));
			btPromocao.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
			btPromocao.setText("Promoção");
			btPromocao.setSize(new java.awt.Dimension(83,20));
			btPromocao.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JasperReportControllerEtiquetaPromocao.geraRelatorioEtiquetaPromocao(GerenciadorBD.getConexao());
				}
			});
		}
		return btPromocao;
	}

	/**
	 * This method initializes btAtacadoPromocao	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtAtacadoPromocao() {
		if (btAtacadoPromocao == null) {
			btAtacadoPromocao = new JButton();
			btAtacadoPromocao.setLocation(new java.awt.Point(164,78));
			btAtacadoPromocao.setText("Atacado e Promoção");
			btAtacadoPromocao.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
			btAtacadoPromocao.setSize(new java.awt.Dimension(135,20));
			btAtacadoPromocao.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JasperReportControllerEtiquetaAtacadoPromocao.geraRelatorioEtiquetaAtacadoPromocao(GerenciadorBD.getConexao());
				}
			});
		}
		return btAtacadoPromocao;
	}

	/**
	 * This method initializes btFabricaComplemento	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtFabricaComplemento() {
		if (btFabricaComplemento == null) {
			btFabricaComplemento = new JButton();
			btFabricaComplemento.setLocation(new java.awt.Point(320,78));
			btFabricaComplemento.setText("Fábrica e Complemento");
			btFabricaComplemento.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
			btFabricaComplemento.setSize(new java.awt.Dimension(149,20));
			btFabricaComplemento.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JasperReportControllerEtiquetaFabricaComplemento.geraRelatorioEtiquetaFabricaComplemento(GerenciadorBD.getConexao());
				}
			});
		}
		return btFabricaComplemento;
	}

	/**
	 * This method initializes btFabricaAtacadoPromocao	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getBtFabricaAtacadoPromocao() {
		if (btFabricaAtacadoPromocao == null) {
			btFabricaAtacadoPromocao = new JButton();
			btFabricaAtacadoPromocao.setText("Fábrica / Atacado / Promoção");
			btFabricaAtacadoPromocao.setLocation(new java.awt.Point(141,114));
			btFabricaAtacadoPromocao.setSize(new java.awt.Dimension(177,24));
			btFabricaAtacadoPromocao.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 10));
			btFabricaAtacadoPromocao.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					JasperReportControllerEtiquetaFabricaAtacadoPromocao.geraRelatorioEtiquetaFabricaAtacadoPromocao(GerenciadorBD.getConexao());
				}
			});
		}
		return btFabricaAtacadoPromocao;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		RelatorioEtiquetasView application = new RelatorioEtiquetasView();
		application.setVisible(true);
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		this.setMinimumSize(new java.awt.Dimension(500,200));
		this.setPreferredSize(new java.awt.Dimension(500,200));
		this.setSize(500, 200);
		this.setContentPane(getJContentPane());
		this.setTitle("Relatório de Etiquetas");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			lTituloEtiquta = new JLabel();
			lTituloEtiquta.setBounds(new java.awt.Rectangle(138,11,190,16));
			lTituloEtiquta.setFont(new java.awt.Font("MS Reference Sans Serif", java.awt.Font.BOLD, 12));
			lTituloEtiquta.setText("Etiquetas para Impressão");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(getBtEtiquetaFabrica(), null);
			jContentPane.add(getBtFabricaAtacado(), null);
			jContentPane.add(getBtAtacado(), null);
			jContentPane.add(getBtPromocao(), null);
			jContentPane.add(getBtAtacadoPromocao(), null);
			jContentPane.add(getBtFabricaComplemento(), null);
			jContentPane.add(getBtFabricaAtacadoPromocao(), null);
			jContentPane.add(lTituloEtiquta, null);
		}
		return jContentPane;
	}

}

o que acontece é que quando uso o getClass() o método não pode ser static, qdo tiro o static dá erro na chamada do método do arquivo que chama o relatório.

Alguma dica?

C

Posta so o metodo pra eu ver

M

Olá, pessoal!!
Consegui resolver com algumas das dicas de vcs!
Fiz da seguinte forma:
adicionei no classpath do manifest as bibliotecas do jasper Report e no caminho que indicava onde estava o arquivo coloquei o caminho completo.
Christielen e Cassolato, valeu!!

Criado 9 de outubro de 2006
Ultima resposta 10 de out. de 2006
Respostas 9
Participantes 3