e ai galera…
Eu já não aguento mais ver esse erro, já to uns dois dias tentando resolver e nao consigo achar uma solução. Quero gerar um relatorio em pdf em uma pagina jsp/struts.
Por favor alguem me ajude…
Na pagina do navegador acontece esse erro:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: com/lowagie/text/DocumentException
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:294)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException
net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:183)
net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:387)
br.com.teclogica.toystore.controller.RelatorioAction.gerarRelatorioPdf(RelatorioAction.java:60)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.16 logs.
este é meu código e as maneiras que já tentei fazer, a maioria causa o mesmo erro.
public class RelatorioAction extends DispatchAction {
/**
*
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward gerarRelatorioPdf(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
Connection conn = PoolConection.getConection();
try{
JasperReport jReport = RelatorioAction.getReport("RelatorioPedidos");
HashMap<String,String> params = new HashMap<String,String>();
params.put("PathRelItens", "/br/com/teclogica/toystore/reports/relDetalhesPedido.jasper");
JasperPrint report = JasperFillManager.fillReport(jReport, params, conn);
//---------------------------------------------------------------------
//codigo alternativo para gerar pdf
/*ServletOutputStream servletOutputStream = response.getOutputStream();
File reportFile = new File(this.getServlet().getServletConfig().getServletContext()
.getRealPath("WEB-INF/classes/br/com/teclogica/toystore/reports/RelatorioPedidos.jasper"));
byte[] b = JasperRunManager.runReportToPdf(reportFile.getPath(),params, new JREmptyDataSource());
response.setContentType("application/pdf");
response.setContentLength(b.length);
servletOutputStream.write(b, 0, b.length);
servletOutputStream.flush();
servletOutputStream.close();*/
//-----------------------------------------------------------------------
//ByteArrayOutputStream baos = new ByteArrayOutputStream();
//JasperFillManager.fillReportToStream(jReport, baos, params, conn);
//-----------------------------------------------------------------------
//JasperExportManager.exportReportToPdfFile("RelatorioPedidos.jrprint");
//JasperViewer.viewReport("RelatorioPesaol.pdf", true);
//JasperExportManager.exportReportToPdfFile(report,"D:/caminho/relatItens.pdf");
//response.setContentType("application/pdf");
//-----------------------------------------------------------------------
//byte[] pdfSegundaVia = JasperRunManager.runReportToPdf(jReport,params, new JREmptyDataSource());
//-----------------------------------------------------------------------
//JasperExportManager.exportReportToHtmlFile(report,"/br/com/teclogica/toystore/reports/relatItens.html");
//response.setContentType("application/html");
//----------------------------------Essa é a unica que funciona ---------------------
//visualização do relatorio
//JasperViewer view = new JasperViewer(report);
//view.setVisible(true);
//imprime o relatorio
//JasperPrintManager.printReport(report, true);
//--------------------------------------------------------------------
//gera relatorio em xls
/*String caminhoDestinoPDF = "D:/TECBMMAB/Estagio/Java/CursoJavaWorkspace3.2/StrutsToyStore/classes/br/com/teclogica/toystore/reports/relatItens.pdf";
OutputStream output = new FileOutputStream(new File(caminhoDestinoPDF));
ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
byte bytes[] = new byte[10];
// exportação para excel
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, report);
exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, xlsReport);
exporterXLS.setParameter(JRXlsExporterParameter.OUTPUT_FILE, caminhoDestinoPDF);
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);
exporterXLS.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporterXLS.exportReport();
// converte para bytes
bytes = xlsReport.toByteArray();
xlsReport.close();
// grava os bytes na saída
output.write( bytes, 0, bytes.length );
output.flush();
output.close();*/
//----------------------------------------------------------------------------
}catch (Exception e){
e.printStackTrace();
}finally{
if (conn != null){
conn.close();
}
}
return mapping.findForward("sucesso");
}
public static JasperReport getReport(String reportName) throws Exception {
String reportPath = "caminho/"+reportName+".jasper";
InputStream stream = RelatorioAction.class.getResourceAsStream(reportPath);
if(stream==null){
throw new Exception("Relatório não encontrado:"+reportPath);
}
JasperReport report = (JasperReport) JRLoader.loadObject(stream);
return report;
}
}