Erro(insolucionável) no jasperreport

3 respostas
marcosbrandao

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;
    }
	
	
}

3 Respostas

furutani

Com esse erro:

java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException

é possivel verificar que esta faltando um jar.
No caso o itext.jar, coloque-o no seu classpath

christianovale

Falou tudo! Com certeza esse erro é falta do itext.jar.

Se nao tiver ele dentro do pacote do iReport procure neste site que voce vai encontrar

http://www.jarfinder.com/

marcosbrandao

Opa…

Valeu cara, agora funcionou.

Criado 7 de novembro de 2006
Ultima resposta 7 de nov. de 2006
Respostas 3
Participantes 3