Pessoal Instalei o iReports versão 1.2.6 na minha máquina.
Criei um relatório através de uma conexão access testei e compilei com sucesso (listagem_relatorios.jasper)
Utilizo o NetBeans 5.0 como ferramenta IDE, quando vou importar as seguintes Lib abaixo:
import java.util.HashMap;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.JasperReport;
import java.net.URL;
As seguintes importações acima que estão em negrito e sublinhado não estão funcionando ele informa que o package net.sf.jasperreports não existe.
Como faço para importar as bibliotecas corretas para utilizar o código abaixo:
try {
Connection con = null;
String dns = "jdbc:odbc:DBQ=d:\\banco.mdb;Driver={Microsoft Access Driver (*.mdb)}";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(dns,usuario,senha);
Statement st = con.createStatement();
String SQL = "Select * from TProdutos";
ResultSet rs = st.executeQuery(SQL);
String reportFile="Listagem_produtos.jasper";
HashMap parametros=new HashMap();
URL urlFile=getClass().getClassLoader().getResource(reportFile);
if(urlFile==null)
{
throw new Exception("Arquivo " + reportFile + " não localizado");
}
JasperReport report=JasperManager.loadReport(urlFile.openStream());
JasperPrint impressao=JasperManager.fillReport(report,parametros,con);
JasperViewer viewer=new JasperViewer(impressao,false);
viewer.setTitle("Listagem de Produtos");
viewer.setBounds(0,0,400,300);
viewer.show();
rs.close();
st.close();
con.close();
}
catch(SQLException e) {
e.printStackTrace();
}
catch(ClassNotFoundException e) {
e.printStackTrace();
}
finally {
}
Obrigado Galera.
De uma forma simples, copie todas as bibliotecas que contiverem na pasta lib de onde vc instalou seu iReport, para o seu classpath.
Nem todas serão usadas, sendo assim, você pode ir excluindo-as depois. ok?
Bom fui até o menu: Tools >> Library Manger
Criei um class path do jar jasperreports-1.2.6.jar adicionei esta library no meu projeto, tudo ok.
Estou com um outro problema agora minha aplicação não esta encontrando o arquivo .jasper
String reportFile=“Listagem_produtos.jasper”;
HashMap parametros = new HashMap();
URL urlFile = getClass().getClassLoader().getResource(reportFile);
//JOptionPane.showMessageDialog(null,"Caminho: " + urlFile,"Titulo",JOptionPane.PLAIN_MESSAGE);
if(urlFile==null)
{
//throw new IOException("Arquivo " + reportFile + " não localizado");
JOptionPane.showMessageDialog(null,"O Arquivo (" + reportFile + ") não encontrado","ATENÇÃO !!!",JOptionPane.PLAIN_MESSAGE);
}
A variavel urlFile sempre esta null em qual diretorio eu coloco este arquivo Listagem_produtos.jasper da minha aplicação.
Arvore de Dir esta assim:
SCE
------ build
------------- classes
----------------------- sce
------ dist
----------- lib
-------nbproject
-------------------private
------ src
----------- sce
----------------- Main.java
----------------- Principal.java
------ test
Se puder me dar uma ajuda onde posso colocar este arquivo que eu criei através do iReports, valeu
Mantenha o .jasper no mesmo diretório que está sua classe que vai criar o relatório.
Dessa forma use isto para criar seu relatório:
String relJasper = "Listagem_produtos.jasper";
JasperPrint jp = JasperFillManager.fillReport( getClass().getResourceAsStream( relJasper ), parameters, JRs );
O importante é usar getClass().getResourceAsStream(). É o que a maioria dos métodos usam para buscar seu .jasper.
Se ainda tiver dúvidas sobre isso, há vários tópicos falando sobre o assunto. ok?!
Este código que gera o relatório esta dentro do evento
private void mnu_listProdActionPerformed(java.awt.event.ActionEvent evt)
Coloquei meu arquivo .jasper dentro da dir onde esta meus arquivos .java esta certo?
Meu código ficou assim:
import java.util.HashMap;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;
private void mnu_listProdActionPerformed(java.awt.event.ActionEvent evt) {
try {
Connection con = null;
String dns = "jdbc:odbc:DBQ=d:\\banco.mdb;Driver={Microsoft Access Driver (*.mdb)}";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(dns,usuario,senha);
Statement st = con.createStatement();
String SQL = "Select * from TProdutos";
ResultSet rs = st.executeQuery(SQL);
String reportFile="Listagem_produtos.jasper";
HashMap parametros = new HashMap();
JasperPrint impressao = JasperFillManager.fillReport( getClass().getResourceAsStream( reportFile ), parametros, con);
JasperViewer viewer = new JasperViewer(impressao,false);
viewer.setTitle("Listagem de Produtos");
viewer.setBounds(0,0,400,300);
viewer.setVisible(true);
rs.close();
st.close();
con.close();
}
catch(JRException e) {
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}
catch(ClassNotFoundException e) {
e.printStackTrace();
}
finally {
}
}
ERRO:
Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at net.sf.jasperreports.engine.fill.JRFillTextElement.<clinit>(JRFillTextElement.java:63)
at net.sf.jasperreports.engine.fill.JRFillObjectFactory.getStaticText(JRFillObjectFactory.java:494)
at net.sf.jasperreports.engine.base.JRBaseStaticText.getCopy(JRBaseStaticText.java:93)
at net.sf.jasperreports.engine.fill.JRFillElementGroup.<init>(JRFillElementGroup.java:88)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.<init>(JRFillElementContainer.java:90)
at net.sf.jasperreports.engine.fill.JRFillBand.<init>(JRFillBand.java:77)
at net.sf.jasperreports.engine.fill.JRFillObjectFactory.getBand(JRFillObjectFactory.java:374)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:395)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:92)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:74)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:147)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:57)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:363
UMA INFORMAÇÃO PARA AJUDA:
Minha class ela é herança de JFrame
public class Principal extends javax.swing.JFrame {
Esta faltando alguma Lib já importei as seguintes para meu projeto
commons-collections-2.1.jar
jasperreports-1.2.6.jar
Valeu
Muito provavelmente falta importar a bibliteca commons-logging. Por isso te falei para importar todas da pasta lib, pois dependendo do que contém na sua classe que cria o métoda, diferentes bibliotecas serão usadas.
Eu por exemplo, tenho de usar:
jasperreports-1.2.4.jar
commons-logging-1.0.2.jar
commons-javaflow-20060411.jar
commons-collections-2.1.jar
itext-1.3.1.jar
Claro que as versões podem variar.
Outra dica, o erro te diz o que está faltando.
org/apache/commons/logging/LogFactory
Importei todos os jars do dir Lib da iReports e esta mostrando este erro, neste caso como faço para detectar o problema.
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2222)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2235)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2703)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:760)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:278)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:191)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:361)
at sce.Principal.mnu_listProdActionPerformed(Principal.java:494)
at sce.Principal.access$2400(Principal.java:13)
at sce.Principal$25.actionPerformed(Principal.java:416)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.AbstractButton.doClick(AbstractButton.java:302)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1000)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1041)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3126)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1774)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)