Erro com IReport

3 respostas
P

Esta é a Classe Java

package negocio;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.HashMap;

import java.util.Map;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRResultSetDataSource;

import net.sf.jasperreports.engine.JasperExportManager;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.view.JasperViewer;

import net.sf.jasperreports.engine.fill.JRVerticalFiller;

public class RelCidade {

private static Connection getConnection() throws ClassNotFoundException,
		SQLException {
	String driver = "org.postgresql.Driver";
	String url = "jdbc:postgresql://localhost:5432/";
	String user = "postgres";
	String password = "postgres";
	
	Class.forName(driver);
	Connection con = DriverManager.getConnection(url, user, password);
	return con;
}

public void geraRelatorio() throws JRException, Exception {
	
	Connection con = getConnection();
	Statement stm = con.createStatement();
	String query = "select * from cidade";
	ResultSet rs = stm.executeQuery(query);
	JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
	Map parameters = new HashMap();
	// parameters.put("abc" , "def");	
	

	JasperFillManager.fillReportToFile("RelCidade.jasper",	parameters, jrRS);
	JasperExportManager.exportReportToPdfFile("RelCidade.jrPrint");

	JasperViewer.viewReport("RelCidade.pdf", false);
}

public static void main(String[] args) throws JRException, Exception {
	new RelCidade().geraRelatorio();
}

}

Este é o Servlet

/*

  • RelCidadeSV.java
  • Created on 14 de Maio de 2007, 20:20
    */

package servlet;

import <a href="http://java.io">java.io</a>.<em>;

import <a href="http://java.net">java.net</a>.</em>;

import javax.servlet.<em>;

import javax.servlet.http.</em>;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.*;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.JasperReport;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.view.JasperViewer;

import net.sf.jasperreports.engine.fill.JRVerticalFiller;

public class RelCidadeSV extends HttpServlet {

public static Connection con;
public static String banco = BdSGC; // Nome do banco de dados

public static String usuario = postgres; // Usuario do banco

public static String senha = postgres; // Senha

protected void doPost(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

conexao(); // Faz a conexão

// Na variavel pathJasper ficara o caminho do diretório para

// os relatórios compilados (.jasper)

String pathJasper = getServletContext().getRealPath(

"/WEB-INF/classes/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 relatorio
    Map 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(“PathRelCidade”, pathJasper + “RelCidade.jasper”);
    try {
    // Aqui ele cria o relatório
    JasperPrint impressao = JasperFillManager.fillReport(pathJasper
  • “RelCidade.jasper”, parametros, con);
    // Grava o relatório em disco em pdf
    JasperManager.printReportToPdfFile(impressao, path
  • “/RelCidade.pdf”);
    // Redireciona para o pdf gerado
    res.sendRedirect(“RelCidade.pdf”);
    } catch (Exception e) {
    res.getWriter().println("Erro ao gerar o relatório: " + e);
    }
    }
    // Cria a conexão
    public void conexao() {
    try {
    if (con == null || con.isClosed()) {
    Class.forName(“org.postgresql.Driver”);
    con = DriverManager.getConnection(
    “jdbc:postgresql://localhost:5432/” + banco, usuario, senha);
    }
    } catch (Exception e) {
    System.out.println(“não foi possível conectar ao banco ->”);
    e.printStackTrace();
    }
    }
    protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1)
    throws ServletException, IOException {
    doPost(arg0, arg1);
    }
    }
    /**
  • @author Paulo

  • @version
    */

    /** Processes requests for both HTTP GET and POST methods.

    • @param request servlet request
    • @param response servlet response
      */

Este é o Erro

exception

javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.fill.JRVerticalFiller

net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:111)

net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:222)

net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:162)

servlet.RelCidadeSV.doPost(RelCidadeSV.java:57)

servlet.RelCidadeSV.doGet(RelCidadeSV.java:83)

javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

O que pode estar acontecendo???

O estranho é que estava tudo funcionando num dia anterior.

Obrigado.

3 Respostas

davidbuzatto

O .jar do jasper não está sendo encontrado, assim ele não encontra a classe que ele está precisando. Dê uma revisada nas suas libs do netbenans (vc está usando o netbeans né?).

Falow!

davidbuzatto

Mais um coisa, quando vc for postar código, usa a tag code.

Até mais!

P
exception

javax.servlet.ServletException: Servlet execution threw an exception
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

java.lang.NoClassDefFoundError: Could not initialize class net.sf.jasperreports.engine.fill.JRVerticalFiller
	net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:111)
	net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:222)
	net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:162)
	servlet.RelCargoSV.doPost(RelCargoSV.java:56)
	servlet.RelCargoSV.doGet(RelCargoSV.java:82)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

Verifiquei No Netbeans as libs.
Não estão fora de lugar.
O que ainda posso fazer?

Obrigado.

Criado 17 de maio de 2007
Ultima resposta 17 de mai. de 2007
Respostas 3
Participantes 2