Relatório em Java cm ireport [RESOLVIDO]

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?

Opa!
Mestre, tá faltando biblioteca pra ti.
Incluir o jar org.apache.commons.digester, que tá dentro da tua instalação do iReport também.

Abraço!

Olá amigo!

Ja inclui esse jar mas ainda continua dando o mesmo erro!

Olá eu me enganei deu outro 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/codehaus/groovy/control/CompilationFailedException
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	java.lang.Class.getConstructor0(Unknown Source)
	java.lang.Class.newInstance0(Unknown Source)
	java.lang.Class.newInstance(Unknown Source)
	net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:472)
	net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:238)
	net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:420)
	net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:432)
	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.codehaus.groovy.control.CompilationFailedException
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	java.lang.Class.getDeclaredConstructors0(Native Method)
	java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	java.lang.Class.getConstructor0(Unknown Source)
	java.lang.Class.newInstance0(Unknown Source)
	java.lang.Class.newInstance(Unknown Source)
	net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:472)
	net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:238)
	net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:420)
	net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:432)
	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.

Seu Relatorio esta como Grovy…

Mude para Java, e problema estará resolvido

Pessoal consegui resolver o problema, estava faltando alguns jars na minha aplicação, e tinha alguns jars que estava usando diferente da versão do ireport.

Muito obrigado a todos!!!

Man, estou passando pelo mesmo erro. Tem como você me da uma força? Quais libs você colocou? E qual a versão do Jasper?

Olá!

Cara você tem que baixar todos os jars da mesma versão do ireport que está instalado em sua máquina.

Por exemplo:

Seu IReport possui a versão 1.2.3, você tem que baixar todos os jar referente a essa versão. Verifica também se você colocou todos os jars que é preciso no projeto para impressão do relatório.

Eu não sei de cabeça qual a versão versão do IReporte usei nem os nomes dos jars que coloquei. No momentou estou no trabalho quando chegar em casa eu vejo isso e post no forum pra vc.

Obrigado man, fico no aguardo.

se você procurar, onde você baixou o ireport tem os jars