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:
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.
[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.
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…
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
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