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 java.io.;
import java.net.;
import javax.servlet.;
import javax.servlet.http.;
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
andPOST
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.