Bom, eu to com dificuldades em chamar o relatório no botão, já tentei várias vezes e nada. Já procurei em alguns tópicos mas não consegui resolver.
Estou usando o iReports 4.5 (Antes estava tentando com o 4.3) e o Netbeans 6.8
Eis o código:
[code]public void gerarRelatorio() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
// String reportname = "com.br.pinhuxsistemadevendas.relatorios.report1.jasper";
InputStream fis = this.getClass().getClassLoader().getResourceAsStream("/Pacientes.jasper");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/autoodonto", "root", "");
JasperPrint print = JasperFillManager.fillReport(fis, new HashMap(), conn);
JasperViewer jv = new JasperViewer(print, false); // false Needed not to close parent frame
jv.setVisible(true);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (Exception ex) {
System.err.println(ex);
}
}
}[/code]
E aqui o erro:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at net.sf.jasperreports.engine.util.JRLoader.<clinit>(JRLoader.java:61)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:376)
at br.autodontov1.forms.FormPaciente.DisplayReport(FormPaciente.java:692)
at br.autodontov1.forms.FormPaciente.btCriarPDFActionPerformed(FormPaciente.java:712)
at br.autodontov1.forms.FormPaciente.access$000(FormPaciente.java:61)
at br.autodontov1.forms.FormPaciente$1.actionPerformed(FormPaciente.java:181)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 31 more
[]'s
Não esta encontrando a classe commons-logging, coloca ela no seu classpath, coloquei no anexo.
Valeu cara.
Resolveu aquela parte, mas estava ajeitando e gerou outro erro:
Estou iniciando com os relatórios e ainda estou perdido.
Código:
[code]ublic RelatorioConsulta() throws SQLException, JRException {
HashMap parametros = new HashMap();
String cod = JOptionPane.showInputDialog(null, "Insira o código da consulta: ");
conecta.getConection();
String sql = "select * from agenda where codigo = " + cod;
PreparedStatement stmt = conecta.getConection().prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
JasperPrint jasperPrint;
try {
jasperPrint = JasperFillManager.fillReport("relatorio/Consultas.jasper" , parametros, jrRS);
JasperViewer.viewReport(jasperPrint, false);
} catch (JRException ex) {
JOptionPane.showMessageDialog(null, ex);
}
public static void main (String args[]) throws SQLException, JRException{
new RelatorioConsulta();
}
}
[/code]
[]'s
Sua aplicação não esta localizando o arquivo relatorioConsultas.jasper, verifique se ele esta na pasta que estão seus relatórios.
Ta difícil, é ajeitando um erro e aparecendo outro, olha o que apareceu agora:
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/ReferenceMap
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.<init>(DefaultExtensionsRegistry.java:97)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:59)
at net.sf.jasperreports.extensions.ExtensionsEnvironment.createDefaultRegistry(ExtensionsEnvironment.java:80)
at net.sf.jasperreports.extensions.ExtensionsEnvironment.<clinit>(ExtensionsEnvironment.java:68)
at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:83)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:87)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
at br.autodontov1.relatorio.RelatorioConsulta.<init>(RelatorioConsulta.java:47)
at br.autodontov1.relatorio.RelatorioConsulta.main(RelatorioConsulta.java:57)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.ReferenceMap
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 21 more
Java Result: 1
[]'s
Coloque este jar que estão em anexo no seu classpath
Mesma coisa…
og4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
at net.sf.jasperreports.components.ComponentsExtensionsRegistryFactory.<clinit>(ComponentsExtensionsRegistryFactory.java:99)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:157)
at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:115)
at net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:53)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.instantiateRegistry(DefaultExtensionsRegistry.java:236)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:213)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:163)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:133)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:105)
at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:83)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:121)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:87)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
at br.autodontov1.relatorio.RelatorioConsulta.<init>(RelatorioConsulta.java:51)
at br.autodontov1.forms.FormPaciente.btRelatorioActionPerformed(FormPaciente.java:689)
at br.autodontov1.forms.FormPaciente.access$000(FormPaciente.java:61)
at br.autodontov1.forms.FormPaciente$1.actionPerformed(FormPaciente.java:181)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.digester.Rule
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 49 more
[]'s
Mesma coisa não, a mensagem mudou coloca estes 2 agora para acabar com os arquivos apache-commons
Falei no sentido que ainda tava com erro…
Agora deu tudo certo, o relatório abriu como eu queria.
Mas apareceu apenas isso ainda:
log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment).
log4j:WARN Please initialize the log4j system properly.
Valeu pela ajuda e obrigado pela atenção
[]'s
De nada, se preoucupa com esta mensagem não, ela só esta aparecendo porque o log não foi, configurado, não irá alterar em nada sua aplicação.
AA, só mais uma coisa antes de alterar o tópico.
O caminho do meu diretório ficou assim:
jasperPrint = JasperFillManager.fillReport(
"D:/Meus documentos/NetbeansProjects/AutOdontov1/src/br/autodontov1/relatorio/Consultas.jasper" , parametros, jrRS);
Se eu gerar o JAR e for abrir em outra máquina o relatório não abre né ?
Como eu colocaria ele dentro do próprio projeto para que pudesse rodar em outros lugares?
[]'s
Tenta assim:
jasperPrint = JasperFillManager.fillReport("relatorio/Consultas.jasper" , parametros, jrRS);
Tentei e não achou…
Assim, criei meu relatório a partir do netbeans mesmo, os relatórios estão no pacote: br.autodontov1.relatorio