Olá pessoal…
Estou utilizando na minha criação de relatórios IReports, Jasper e PostgresSQL.
Ocorre que minha aplicação é desenvolvida na minha máquina com PostgresSQL local, criei os relatórios com conexão na minha máquina, fiz os teste e tudo OK.
Só que para colocar a aplicação no ar, é necessário fazer o deploy no servidor, que utiliza o PostgresSQL da empresa.
Ai que está o problema!!! Minha aplicação funciona mas quando é para gerar os relatórios dá o seguinte erro.
Erro ao gerar o relatório
[code]HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error instantiating servlet class relatorio.RelatorioMatrimonio
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
root cause
java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRException
java.lang.Class.getDeclaredConstructors0(Native Method)
java.lang.Class.privateGetDeclaredConstructors(Class.java:1618)
java.lang.Class.getConstructor0(Class.java:1930)
java.lang.Class.newInstance0(Class.java:278)
java.lang.Class.newInstance(Class.java:261)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
Apache Tomcat/5.0.28[/code]
Minha Servlet que gera o relatório
[code]protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
PreparedStatement ps = null;
ResultSet rs = null;
Connection conn = null;
Util dt = new Util();
String codigo = new String(req.getParameter("codBatismo"));
String dataNascimento = new String();
String dataBatismo = new String();
String codigoControle = new String();
String enderecoParoquia = new String();
String telefoneParoquia = new String();
String pathJasper = getServletContext().getRealPath("/DOCS/relatorios/") + "/";
try{
PoolConexao pc = new PoolConexao();
conn = pc.getConnection();
ps = conn.prepareStatement("Select b.paroquias_par_codigo, b.bat_data, p1.pes_nascimento, p.* " +
"from batismos b, paroquias p, pessoas p1 " +
"where " +
"b.bat_codigo = ? and " +
"b.paroquias_par_codigo = p.par_codigo and " +
"p1.pes_codigo = b.pessoas_pes_codigo ");
ps.setInt(1,Integer.parseInt(codigo));
rs = ps.executeQuery();
rs.next();
enderecoParoquia = rs.getString("par_endereco") + " - " + rs.getString("par_bairro") + " - " + rs.getString("par_cidade") +
" / SP CEP: " + rs.getString("par_cep");
telefoneParoquia = "Tel.: (13)" + rs.getString("par_telefone") + " FAX.: (13)" + rs.getString("par_fax") + " - e-mail: " + rs.getString("par_email");
dataBatismo = dt.getConverteDate3(rs.getString("bat_data"));
dataNascimento = dt.getConverteDate3(rs.getString("pes_nascimento"));
Map parameters = new HashMap();
parameters.put("cidade", rs.getString("par_cidade"));
parameters.put("codigoBatismo", codigo);
parameters.put("dataBatismo", dataBatismo);
parameters.put("dataNascimento", dataNascimento);
parameters.put("enderecoParoquia", enderecoParoquia);
parameters.put("estadoResidente", "SP");
parameters.put("nomeParoquia", rs.getString("par_nome"));
parameters.put("siteParoquia", rs.getString("par_site"));
parameters.put("telParoquia", telefoneParoquia);
//JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
JasperPrint impressao = JasperFillManager.fillReport(pathJasper + "CertidaoBatismo.jasper", parameters, conn);
byte[] buffer = JasperExportManager.exportReportToPdf(impressao);
res.setContentType("application/pdf");
res.setContentLength(buffer.length);
ServletOutputStream ouputStream = res.getOutputStream();
ouputStream.write(buffer, 0, buffer.length);
ouputStream.flush();
ouputStream.close();
}catch (NamingException e) {
res.getWriter().println("Erro ao gerar o relatório 2 : " + e);
//e.printStackTrace();
} catch (SQLException e) {
res.getWriter().println("Erro ao gerar o relatório 4: " + e);
//e.printStackTrace();
}catch(JRException e){
res.getWriter().println("Erro ao gerar o relatório 8: " + e);
//e.printStackTrace();
}
finally {
try {
if (rs != null) rs.close();
if (ps != null) ps.close();
if (conn != null && !conn.isClosed()) conn.close();
} catch (SQLException e1) {}
}
}[/code]
Agradeço desde já qualquer informação
:idea: Edison Silva