Galera estou desenvolvendo umas etiquetas e nelas devem conter um codigo de barras, então montei meu método construi a etiqueta no ireport porém quando vou debugar ele passa todo o metódo ai no final quando ele vai gerar o pdf da um erro, ja pesquisei mais não achei nenhuma conclusão.
estou usando os .jar do itext-2.1.5 pq a 2.1.7 não estava abrindo minhas paginas do sistemas.
estou usando na aplicação o .jar barbecue-1.5-beta1.jar que se encontra dentro da pasta lib do ireport, o que mais está faltando???
Meu método
/*
* Codigo para consultar a lista
*/
PersistenciaDAO<Produto> persistenciaProduto = new PersistenciaDAO<Produto>();
List<Produto> list = persistenciaProduto.listarGenerico("SELECT p FROM Produto p ");
/*
* Final da consulta, retorna array para converter em pdf
*/
//Localiza o contexto da pasta onde esta localizado o .jasper
String pathJasper = servletContext.getRealPath("/ireport/") + "/";
//Faz o mapeamento do context para levar o .jasper a conversao em bytes
Map parametros = new HashMap();
parametros.put("ireport", pathJasper);
try {
//Recebe a lista do array populado
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
//pega o ds + a conexao para ir ate o ireport para listar o array dentro do relatorio
JasperPrint impressao = JasperFillManager.fillReport(pathJasper + "/etiqueta.jasper",parametros, ds);
//converte o relatorio em bytes gerando o pdf
byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
byte[] arquivo = bytes;
//Tratamento para exportacao do pdf para a url do browser e o tratamento de erros.
String nomeDoArquivo = "etiqueta.pdf";
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=".concat(nomeDoArquivo));
response.setContentLength(arquivo.length);
ServletOutputStream sos = response.getOutputStream();
sos.write(arquivo, 0, arquivo.length);
sos.flush();
sos.close();
} catch (Exception e) {
if(e.getClass().getSimpleName().equals("AbortException")){
System.out.println("Documento cancelado");
} else{
System.out.println("Outros");
}
}
}
O erro ocorre na seguinte linha: byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
O erro que esta acontecendo:
30/09/2009 11:17:34 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet vraptor2 threw exception
java.lang.NoSuchMethodError: com.lowagie.text.Image.plainWidth()F
at net.sf.jasperreports.engine.export.JRPdfExporter.exportImage(JRPdfExporter.java:1219)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:675)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:641)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:536)
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:323)
at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:188)
at com.estoque.logic.ProdutoLogic.geraRelatorio(ProdutoLogic.java:303)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:61)
at org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:32)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:131)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:58)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:38)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:98)
at org.vraptor.core.DefaultController.execute(DefaultController.java:46)
at org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
O que devo fazer???