JasperReports e iReports 3.5 no NetBeans 6.5

Pessoal, boa tarde.

Ja rodei pela net a procura de um tutorial sobre como gerar uma classe java para chamar um relatorio gerado pelo JasperReports e iReports 3.5 no NetBeans 6.5 através do plugin para NetBeans que pode ser baixado aqui:

http://sourceforge.net/project/downloading.php?group_id=64348&filename=iReport-nb-3.5.0-plugin.zip&a=99880378

Eu ja instalei o plugin, inclusive montei um tutorial sobre a instalação e a geração dos relatorios e publiquei no SlideShare neste link:

O problema e que não acho nenhum tutorial sobre como criar uma classe java para chamar o relatorio gerado pelo plugin.

Encontrei ate alguns modelos de classe, e em todos eles pede pra importar alguns pacotes e não faço ideia de onde vem estes pacotes: Exemplo:

import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.JasperReport;

Em outros tutoriais pedem para importar:

import dori.jasper.engine.*;
import dori.jasper.view.JasperViewer;

Eu importei ja pro projeto o iReport conforme imagens anexas, e achei muito curioso a quantidade de arquivos que ele importou.

Enfim, não sei mais o que fazer. A primeira parte que é da instalação e geração está ok, o lance agora é a classe java para poder chamar o relatorio gerado (.jasper) e exibi-lo dentro da aplicação ao ser executada.

Se alguem puder me ajudar, agradeço imensamente.

Abraços

Flávio




Eu faço assim:

JasperReport report = (JasperReport) JRLoader.loadObject(new File("nome do arquivo de relatorio.jasper")); JasperPrint print = JasperFillManager.fillReport(report, parametros, conexaoSql); JRViewer viewer = new JRViewer(print);

onde é um HashMap; e é uma Connection.

O objeto é um componente Swing como qualquer outro, então agora é só inseri-lo num JPanel ou num JFrame, por exemplo.

[size=12][size=18]Caros, me desculpem por estar me metendo na pergunta, mas estou com um problema muito parecido.
Sou iniciante em Java(apenas um gafanhoto) e criei 3 relatórios dentro da minha aplicação para desktop.
Em tempo de projeto, o preview está perfeito porque uso um select que carrega dados de uma view que eu já codifiquei lá no PostgresQL. Enfim, os relatórios me retornam o que eu preciso.
A minha humilde aplicação tem um menu principal onde eu quero que quando o usuário dê um duplo-clique em Relatórios -> Melhores Clientes este relatório [size=7][size=9][size=12].jasper [/size][/size][/size]seja exibido na tela.
Vocês poderiam me ajudar? também já vasculhei a internet e não encontrei nenhuma luz.

Atenciosamente,[/size][/size]

Flavio… to vendo q vc encontro o mesmo problema q eu …
axo q eu vou poder te ajudar…
vc importou a biblioteca… eu tb cometi o mesmo erro…
vc tem q importar para o projeto apenas os arkivos .jar…
extraia a pasta em qualquer lugar na sua makina ae…após isso, entre na pasta extraída/dist e copie o arkivo jasperreports-3.5.1.jar(as vzs pode mudar o nome por causa da sua versao) para fora da pasta… de preferencia em c:\ mesmo…
no netbeans, faça a importação desse jar…
caso não funcione, vc deve voltar à pasta q vc extraiu lá atras, entrar na pasta lib e copiar todos os .jar existentes… cole em algum lugar, e importe para o projeto de novo…

pronto…
lembrando que vc deve importar em biblioteca e não biblioteca de testes… importe como jar/pasta…
serão importados menos arkivos do q qdo vc importo akelas bibliotecas… mto menos… o ícone tb é diferente…
outro detalhe: vc deve copiar os arkivos pra outro local pq se vc tentar copiar atraves da pasta original, o netbeans entende q akela pasta é um projeto/biblioteca e importa ela inteira, ao inves de importar somente os .jars, que sao necessarios na verdade…

espero ter ajudado…
abraço

estou tentando mais sem sucesso !!! Segue o meu código:

package br.bcs.action;

import br.bcs.conection.Conexao;
import com.mysql.jdbc.Connection;
import java.io.File;
import java.sql.SQLException;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import net.sf.jasperreports.engine.JRException;
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.engine.util.JRLoader;
import net.sf.jasperreports.swing.JRViewer;

public class RelatorioAction {

    /** Creates a new instance of RelatorioAction */
    public RelatorioAction() {
    }
    private String saida;

    /**
     * Esse tipo de geração de relatório é útil quando precisamos apenas da conexão
     * com o banco e quando o JasperReports precisa de nenhum ou de poucos
     * parâmetros para realizar a query (exemplo: o id de um objeto que está no banco).
     *
     * @return String navigation rule que exibe o relatório
     */
    public String geraRelatorioPassandoConexao() {
        saida = null;
        String jasper = getDiretorioReal("/rptProduto.jasper");
        Connection conexao = null;

        try {
            // Abro a conexão com o banco que será passada para o JasperReports
            conexao = (Connection) new Conexao().getConexao();
            // Mando o jasper gerar o relatório
            JasperReport report = (JasperReport) JRLoader.loadObject(new File("rptProduto.jasper"));
            JasperPrint print = JasperFillManager.fillReport(jasper, null, conexao);
            JRViewer viewer = new JRViewer(print);
            // Gero o PDF
            preenchePdf(print);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // Sempre mando fechar a conexão, mesmo que tenha dado erro
                if (conexao != null) {
                    conexao.close();
                }
            } catch (SQLException e) {
            }
        }
        return "exibeRelatorio";
    }

    /**
     * Método para preencher o PDF do relatório
     *
     * @param print JasperPrint
     * @throws JRException
     */
    private void preenchePdf(JasperPrint print) throws JRException {
        // Pego o caminho completo do PDF desde a raiz
        saida = getDiretorioReal("/pdf/relatorio.pdf");
        // Exporto para PDF
        JasperExportManager.exportReportToPdfFile(print, saida);
        /*
         * Jogo na variável saída o nome da aplicação mais o
         * caminho para o PDF. Essa variável será utilizada pela view
         */
        saida = getContextPath() + "/pdf/relatorio.pdf";
    }

    /**
     * Método para retornar o caminho completo do diretório onde se encontra o
     * arquivo 'jasper' e o arquivo 'pdf'
     *
     * @param diretorio String diretório a ser localizado na aplicação
     * @return String caminho completo
     */
    private String getDiretorioReal(String diretorio) {
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        return session.getServletContext().getRealPath(diretorio);
    }

    /**
     * Método para retornar o nome da aplicação
     *
     * @return String nome da aplicacao
     */
    private String getContextPath() {
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        return session.getServletContext().getContextPath();
    }

    public String getSaida() {
        return saida;
    }

    public void setSaida(String saida) {
        this.saida = saida;
    }
}

Amigos boa noite,
Sou novo com Ireport, estou tentando passar parametros para iReport, já tentei de tudo, diversas formas, e até agora não consigo ver uma luz no fundo do túnel, por favor me ajudem, segue meu código:

Versão netbeans: 7.3
Versão Ireport: 5.2.0
Versão MySQL: 5.6.12


import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;

//import net.sf.jasperreports.engine.JRException;  
//import net.sf.jasperreports.engine.JasperFillManager;
//import net.sf.jasperreports.engine.JasperPrint;
//import net.sf.jasperreports.engine.JasperReport;
//import net.sf.jasperreports.engine.util.JRLoader;
//import net.sf.jasperreports.engine.JRException;
//import net.sf.jasperreports.engine.JasperReport;
//import net.sf.jasperreports.engine.JasperReportsContext;
//import net.sf.jasperreports.web.JRInteractiveException;
//import net.sf.jasperreports.web.WebReportContext;
//import net.sf.jasperreports.web.actions.Action;
import wr.acessoBD.AcessoMySql;

 private void imprimirRecibo() throws SQLException {
       
        
        try {
            Connection con;
             
            con = AcessoMySql.conectar();
            //InputStream relatorio = getClass().getResourceAsStream( "./relatorio_comanda.jasper" );  
            InputStream relatorio = getClass().getResourceAsStream( "/wrestaurante/view/relatorio_comanda.jasper" );  
                      
            Map parametros = new HashMap();
            parametros.put("nmesa", getMesa());

            System.out.println("relatorio = " + relatorio);
            //Resultado do print relatorio = java.io.BufferedInputStream@41424b9c
 
            System.out.println("parametro = " + parametros);
            //Resultado do print parametro = {nmesa=4}

            System.out.println("con = " + con);
            //Resultado do print con = com.mysql.jdbc.JDBC4Connection@6772103c
            
Linha 1461:   JasperPrint print = JasperFillManager.fillReport(relatorio, parametros, con); //Onde ocorre o erro
           
            JasperViewer.viewReport(print);
            
        } catch (JRException ex) {
            Logger.getLogger(PedidosView.class.getName()).log(Level.SEVERE, null, ex);
        }
    
    }

Quando utilizo o preview do iReport ele pede o parâmetro, e funciona perfeito, mas quando vou para o netBeans e tento comunicar com o iReport gera o erro na linha 1461, como o trace abaixo:

relatorio = java.io.BufferedInputStream@71880832
parametro = {nmesa=4}
con = com.mysql.jdbc.JDBC4Connection@19d244d9
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
	at net.sf.jasperreports.engine.util.JRLoader.<clinit>(JRLoader.java:68)
	at net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99)
	at net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:94)
	at net.sf.jasperreports.engine.DefaultJasperReportsContext.<init>(DefaultJasperReportsContext.java:71)
	at net.sf.jasperreports.engine.DefaultJasperReportsContext.<clinit>(DefaultJasperReportsContext.java:59)
	at net.sf.jasperreports.engine.JasperFillManager.getDefaultInstance(JasperFillManager.java:85)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:824)
	at wrestaurante.view.PedidosView.imprimirRecibo(PedidosView.java:1461)
	at wrestaurante.view.PedidosView.jButton2ActionPerformed(PedidosView.java:908)
	at wrestaurante.view.PedidosView.access$1900(PedidosView.java:91)
	at wrestaurante.view.PedidosView$18.actionPerformed(PedidosView.java:520)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:708)
	at java.awt.EventQueue$4.run(EventQueue.java:706)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

	at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
	at java.awt.Dialog.show(Dialog.java:1082)
	at java.awt.Component.show(Component.java:1651)
	at java.awt.Component.setVisible(Component.java:1603)
	at java.awt.Window.setVisible(Window.java:1014)
	at java.awt.Dialog.setVisible(Dialog.java:1005)
	at wrestaurante.view.Inicio.exibirPedido(Inicio.java:3238)
	at wrestaurante.view.Inicio.bt4ActionPerformed(Inicio.java:2774)
	at wrestaurante.view.Inicio.access$2000(Inicio.java:19)
	at wrestaurante.view.Inicio$21.actionPerformed(Inicio.java:1614)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6505)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6270)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4861)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:708)
	at java.awt.EventQueue$4.run(EventQueue.java:706)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 93 more

Acrescenteo arquivo commons-logging.jar no seu projeto.