Olá pessoal!
Estou começando a desenvolver em java e estou precisando gerar uma fatura usando ireport mas não estou conseguindo, ja olhei vários tutoriais e foruns mas não consegui resolver meu problema.
No meu servlet passo dois parametros para o ireport onde usarei para fazer a pesquisa no banco de dados. Já no ireport criei dois parametros, “codigoCliente” e “codigoNotaFiscal” o mesmo nome que usei na passagem de parametro na mina servlet, minha query no ireport ficou da seguinte maneira:
select c.codigo, c.nome, c.endereco as enderecoCliente, c.municipio as municipioCliente, c.estado as estadoCliente, c.pcaPagamento, c.inscricaoMunicipal, c.inscricaoEstadual, c.cnpj,
n.notaDebitoLocacao, n.contrato, n.descricaoContrato, n.dataVencimento, n.dataPedidoDeLocacaoInicial, n.dataPedidoDeLocacaoFinal, n.valorTotal, n.dataEmissao, n.valorPorExtenso,
f.codigo, f.nome, f.endereco as enderecoFilial, f.municipio as municipioFilial, f.estado as estadoFilial, f.cep as cepFilial, f.telefone as telefoneFilial, f.cnpj as cnpjFilial, f.inscricaoEstadual as inscricaoEstadualFilial , f.inscricaoMunicipal as inscricaoMunicipalFilial,
i.notaDebitoLocacao, i.numeroNotaFiscal, i.data, i.entradaOuSaida, i.quantidade, i.unidade, i.denominacaoDoBem, i.diasPermanentes, i.debitoOuCredito, i.precoUnitario, i.precoTotal
from cliente c, notaFiscal n, filial f, itensNotaFiscal i
where c.codigo = $P{codigoCliente}
and n.notaDebitoLocacao =$P{codigoNotaFiscal}
e minha servlet :
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import modelo.Cliente;
import modelo.NotaFiscal;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
public class TesteControle extends HttpServlet {
// private static final long serialVersionUID = 1L;
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
System.out.println("vericicaçãooooooooooooooooooooo");
String codigoNotaFiscal = request.getParameter("codigo");
String acao = request.getParameter("acao");
HttpSession session = request.getSession();
Cliente cliente = (Cliente) session.getAttribute("cliente");
List<NotaFiscal> notas = new ArrayList<NotaFiscal>(cliente
.getNotasFiscais());
for (NotaFiscal fatura : notas) {
if (fatura.getNotaDebitoLocacao().equals(codigoNotaFiscal)) {
request.setAttribute("fatura", fatura);
HashMap<String, Object> parametros = new HashMap<String, Object>();
Connection con = DAO.criarConexao();
// Na variavel pathJasper ficara o caminho do diretório para
// os relatórios compilados (.jasper)
String pathJasper = getServletContext().getRealPath("/relatorios/")
+ "/";
// A variavel path armazena o caminho real para o contexto
// isso é util pois o seu web container pode estar instalado em
// lugares diferentes
String path = getServletContext().getRealPath("/");
// Parametros do relatorioMap parametros = new HashMap();
// O único parametro que devemos passar é o PathRelAutores
// é o caminho pro RelAutores.jasper (que foi subtituido pelo
// valor fixo ?D:/iReport-0.4.0/RelAutores.jasper?)
parametros.put("codigoCliente", cliente.getCodigo());
parametros.put("codigoNotaFiscal", fatura.getNotaDebitoLocacao());
try {
// Aqui ele cria o relatório
JasperPrint impressao = JasperFillManager.fillReport(
pathJasper + "RelatorioFaturateste.jasper", parametros, con);
// Grava o relatório em disco em pdf
JasperManager.printReportToPdfFile(impressao, path + "/RelatorioLivros.pdf");
// Redireciona para o pdf gerado
response.sendRedirect("RelatorioLivros.pdf");
} catch (Exception e) {
response.getWriter().println(
"Erro ao gerar o relatório: " + e);
}
}
}
}
}
quando chega na linha “JasperPrint impressao = JasperFillManager.fillReport(pathJasper + “RelatorioFaturateste.jasper”, parametros, con);” esta dando o erro:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
net.sf.jasperreports.components.ComponentsExtensionsRegistryFactory.<clinit>(ComponentsExtensionsRegistryFactory.java:91)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:157)
net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:115)
net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:53)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.instantiateRegistry(DefaultExtensionsRegistry.java:236)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:213)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:162)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:132)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:104)
net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:81)
net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:182)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:87)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:52)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
controle.TesteControle.service(TesteControle.java:68)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.ClassNotFoundException: org.apache.commons.digester.Rule
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
net.sf.jasperreports.components.ComponentsExtensionsRegistryFactory.<clinit>(ComponentsExtensionsRegistryFactory.java:91)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:157)
net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:115)
net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:53)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.instantiateRegistry(DefaultExtensionsRegistry.java:236)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:213)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:162)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:132)
net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:104)
net.sf.jasperreports.engine.util.JRStyledTextParser.<clinit>(JRStyledTextParser.java:81)
net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:182)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:77)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:87)
net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:57)
net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:52)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
controle.TesteControle.service(TesteControle.java:68)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
Alguem pode me ajudar?