Pessoal, boa tarde.
Sou iniciante em java e desenvolvi um relatório utilizando o iReport para a minha fábrica a partir de uma query em um banco de dados que está configurada no arquivo jasper.
Eu preciso criar uma rotina que abra o relatório dentro de um aplicativo java para enviar o relatório por e-mail em determinados horários para determinados destinos, o que será feito schedulando a tarefa para abrir o aplicativo. Então o aplicativo precisa gerar o .pdf quando aberto e enviar o e-mail, nada mais.
Pesquisei no fórum mas tenho dúvidas e meu código java não funciona (ainda tenho dificuldades com os conceitos básicos da linguagem):
- Será necessário criar uma connectionfactory para passar a conexão com o banco de dados como parâmetro para o jasper, mesmo esta ja estando configurada no momento da criação do relatório dentro do ireport?
Segue o meu código:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package relatorio_atrasospedidos;
import java.sql.Connection;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
/**
*
* @author Fernando
*/
public class Relatorio_AtrasosPedidos {
public JasperPrint gerarRelAtrasos() throws Exception {
JasperPrint rel = null;
try {
String arquivoJasper = "AtrasoPedidos.jasper";
rel = JasperFillManager.fillReport("AtrasoPedidos.jasper", new HashMap());
JasperExportManager.exportReportToPdfFile(rel, "Atrasos.pdf");
} catch (JRException e) {
e.printStackTrace();
}
return rel;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Relatorio_AtrasosPedidos relat = new Relatorio_AtrasosPedidos();
relat.gerarRelAtrasos();
}
}
Segue o stacktrace do erro:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
at net.sf.jasperreports.components.ComponentsExtensionsRegistryFactory.<clinit>(ComponentsExtensionsRegistryFactory.java:91)
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:162)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:132)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:104)
at net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:81)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:182)
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:114)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:435)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:271)
at relatorio_atrasospedidos.Relatorio_AtrasosPedidos.gerarRelAtrasos(Relatorio_AtrasosPedidos.java:24)
at relatorio_atrasospedidos.Relatorio_AtrasosPedidos.main(Relatorio_AtrasosPedidos.java:38)
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 22 more
Java Result: 1