Ireport x vraptor2

34 respostas
R

Caros boa noite.
Existe algum tutorial, artigo ou exemplo para uso do ireport?
estou meio perdido, pois não se devo criar uma relatorio.logic,
que argumentos passar, onde colocar o relatório e como chama-lo.
Muito obrigado :smiley:

34 Respostas

R

Amigos,gostaria de saber se funciona vraptor2 com ireport, ou se existe alguma outra forma de gerar relatório.
Muito obrigado

R

roger2007:

Amigos,gostaria de saber se funciona vraptor2 com ireport, ou se existe alguma outra forma de gerar relatório.
Muito obrigado

Vi alguns exemplos na net e pergunto :
É preciso fazer uma nova conexão ao BD e usar SQL.
Podemos utilizar a conexão gerada pelo ireport?
é preciso fazer alguma alteração no view properties ou no webxml ?
Esse assunto é muito importante a maioria dos sistemas precisa gerar relatórios.
Agradeço a todos e peço ajuda a todos?
Muito obrigado

C

Na documentação do VRaptor 2, voce encontra este material de apoio: http://vraptor.caelum.com.br/vraptor2/pt/file-download.html
Útil para quem sabe gerar o arquivo para Dowunload.

R

Cinei boa tarde.
O relatório será aberto quando for requerido ou ele vai para alguma pasta?

clientOutput.setContentType(“application/pdf”);
Aqui seria o .jxml gerado pelo ireport?

Muito obrigado, pelo direcionamento, pois até agora estava completamente no escuro.

L

Roger,

Da uma olhada nesse link.
http://www.guj.com.br/posts/list/122447.java#662399

R

luiscolling:
Roger,

Da uma olhada nesse link.
http://www.guj.com.br/posts/list/122447.java#662399

Caro luiscolling boa tarde.

Conexao con = new Conexao();
É pra criar uma conexão direta com o banco de dados? e não usar o que é gerado no ireport?

Muito obrigado

L

Boa tarde Roger,

A conexão do iReport que tu esta falando pelo que entendi é a conexão que é configurada para ser usada durante o desenvolvimento do layout.

R

luiscolling:
Boa tarde Roger,

A conexão do iReport que tu esta falando pelo que entendi é a conexão que é configurada para ser usada durante o desenvolvimento do layout.


essa mesma, não devo usá-la?

L

Essa conexão do iReport não é usada para quando você colocar o relatório no teu projeto.
Como você esta fazendo a conexão com o banco? utiliza a mesma classe que faz a conexão pra ti.

Tô sem exemplos aqui pra ti passar mas é mais simples do que parece.

R

luiscolling:
Essa conexão do iReport não é usada para quando você colocar o relatório no teu projeto.
Como você esta fazendo a conexão com o banco? utiliza a mesma classe que faz a conexão pra ti.

Tô sem exemplos aqui pra ti passar mas é mais simples do que parece.

Eu uso o hibernate, por isso assustei ter que fazer uma nova conexão com o bd,
mas isso não é problema, pois assim que a coisa aprender dessa forma tentarei
fazer pelo hibernate.
Onde coloco o arquivo .jrxml ? dentro de uma pasta específica, relatorio, ou fica dentro de web? :smiley:
Muito obrigado pela atenção e dicas, pois estava perdido.

L

Recomendo colocar dentro de um pacote dentro do src, na verdade só é necessário do .jasper o .jrxml server mais como fonte caso seja necessário fazer manutenção no relatório, embora seja possivel editar o .jasper.

Recomendo deixar os 2 arquivos juntos na pasta src
ou coloque dentro de WEB-INF, não deixe dentro do WebContent somente.

Que bom que pude ajudar.

abraço.

R

Caro Luis estou tendo um java.lang.NullPointerException nessa linha:
//Localiza o contexto da pasta onde esta localizado o .jasper String pathJasper = context.getRealPath("/ireport/") + "/";

Eu coloquei o arquivo .jasper em web/WEB-INF/ireport é preciso configurar algo em algum lugar ou informar o contexto sem colar pastas.
muito obrigado, vou continuar tentando, qq coisa posto aqui.

L

Você esta recebendo o context null, certo?
Acho que deveria ter um filter ou interceptor para receber ServletContext context

Uma alternativa seria

String pathJasper = session.getServletContext().getRealPath("/ireport/") + "/";
R

luiscolling:
Você esta recebendo o context null, certo?
Acho que deveria ter um filter ou interceptor para receber ServletContext context

Uma alternativa seria

String pathJasper = session.getServletContext().getRealPath("/ireport/") + "/";

Caro Amigo somente consigo null. O comando acima não consegui implementar, pois session somente dá erro.
dentro de WEB-INF criei uma pasta ireport e lá coloquei o arquivo .jasper.
como deveria escrever o comando acima, pois já tentei vários:

//String pathJasper = context.getRealPath("WEB-INF/ireport");
//String pathJasper = context.getRealPath("/ireport/") + "/";
//String pathJasper = this.getServletContext().getRealPath("ireport/rel_cat.jasper");
String pathJasper = context.getRealPath("/ireport/") + "/"; 
//String pathJasper = context.getRealPath("/cantinavirtual/ireport") + "/rel_cat.jasper ";

No servlet para chamar geraRelatorio precisa de algum parâmetro específico?
Muito obrigado

L

o que retorna assim

No exemplo do outro tópico ele esta usando vraptor, e deve ter um filtro ou interceptor que passa os valores do método
final ServletContext context, HttpServletRequest request, HttpServletResponse response
Sendo assim não são null pra ele.

Coloca o código completo da sua classe, e o que você esta usando de framework?

R

Uso Vraptor 2

Logica

import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;


import org.vraptor.annotations.Component;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Viewless; 

import br.com.cantinavirtual.dao.DaoFactory;
import br.com.cantinavirtual.modelo.Categoria_sm;
  

@Component()
@InterceptedBy({AutorizadorInterceptor.class,DaoInterceptor.class})
public class Relatorio3_smLogic {

	public Relatorio3_smLogic(DaoFactory daoFactory) {
		this.daoFactory = daoFactory;
		}
		private final DaoFactory daoFactory;
       

	@Viewless   
	public void geraRelatorio(final ServletContext context, HttpServletRequest request, HttpServletResponse response) throws Exception{   	    
		
		Connection conn = (Connection) ConnectionDB.getConnection();
		/*
		 * Codigo para consultar a lista
		 */
		
		List<Categoria_sm> list = this.daoFactory.getCategoria_smDao().listatodascategoria();
		/*
		 * Final da consulta, retorna array para converter em pdf
		 */
		
		//Localiza o contexto da pasta onde esta localizado o .jasper
		String pathJasper = context.getRealPath("/ireport/") + "/"; 
		
		//Faz o mapeamento do context para levar o .jasper a conversao em bytes
		Map parametros = new HashMap();
		//parametros.put("SUBREPORT_DIR", pathJasper);
		//parametros.put("SUBREPORT_DIR", "WEB-INF/ireport");
		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 + "rel_cat.jasper",parametros, ds);
		JasperPrint impressao = JasperFillManager.fillReport(pathJasper,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 = "rel_cat.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");
		}
		}
		}

Conexão com bd

public class ConnectionDB {   
	  public static Connection getConnection() throws SQLException {  
		         try {  
		             Class.forName("org.postgresql.Driver");  
		             return DriverManager.getConnection("url","user","senha");  
		         } catch (ClassNotFoundException e) {
		        		 
		             throw new SQLException(e.getMessage());  
		         }  
		     }  
		   	
	
}

JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>   

<%@ include file="../principal_sm/cabcantvirtual.jsp" %>

<script type="text/javascript">

$(document).ready(function(){

    function ClosedMask() {
         $('#mascara').hide();
         $('.BoxFixed').hide();
         $('body').css({ overflow: 'scroll' });
   }

 
         <h1>Categorias</h1>
         <h2>Listagem de todos as categorias de suas cantinas.</h2>

         <h3>Teste</h3>

         <div style="clear:both;"></div>

                        <div id="ferramentas">
                           <div class="right"><a class="pesquisar">Pequisar</a></div>
                           <div class="left"><a href="categoria_sm.manutformadd.logic">Adicionar Categoria</a> | <a onclick="return confirm('Serviço ainda indisponível, por favor, Aperte Cancelar !')" href="relatorio3_sm.geraRelatorio.logic" target="_blank">Imprimir Lista</a></div>
                        </div>
<display:table id="categoria_sm" class="listagem" name="${categorias}" requestURI="categoria_sm.manutlistaporescola.logic" export="true"pagesize="25">
<display:column style="width: 20px;text-align:center;"><a href="categoria_sm.manuteditar.logic?categoria_sm.id_categoria=${categoria_sm.id_categoria}"><img src="img_manut/page_edit.png"></display:column>
<display:column style="width: 20px;color: rgb(255, 255, 255); background-color: rgb(153, 153, 153);border:0px;text-align:center;" property="codcat" sortable="true" title="código"/>
<display:column property="descricao" sortable="true" title="categoria"/>
<display:column property="aux2_sm.descricao" sortable="true" title="disponível"/>
</display:table>


					


					</div>
			</div>
			</div>
<%@ include file="../principal_sm/rodcantvirtual.jsp" %>
</body>

o relatório está em web/WEB-INF/ireport/rel_cat.jasper

Sei que já estou enchendo o saco com isso, mas até agora não funcionou.
Muito obrigado

L

Continuando a batalha… heheheeh

Coloca no construtor assim:

public Relatorio3_smLogic(DaoFactory daoFactory, ServletContext context) {  
        this.daoFactory = daoFactory; 
        this.context = context;
         }  
         private final DaoFactory daoFactory; 
         private final ServletContext context;

Verifica se o context não vem null dessa forma, mas pegue o this.context
acho que você pode retirar aquele context do método geraRelatorio.

Uma hora temos que conseguir fazer funcionar eehehehhee

R

Caro Amigo luis, o problema do null acabou com a alteração que vc sugeriu.
Mas o relatório sai em branco, coloquei uns system.out.println, para ver até
onde ia, já que estava dentro de try/cath, se vc poder dar mas alguma sugestão
agradeço. veja novamente código da lógica:

@Component()
@InterceptedBy({AutorizadorInterceptor.class,DaoInterceptor.class})
public class Relatorio3_smLogic {

	public Relatorio3_smLogic(DaoFactory daoFactory,ServletContext context) {
	 this.daoFactory = daoFactory;   
	 this.context = context;  
	}    
		private final DaoFactory daoFactory;   
		private final ServletContext context; 
       

	@Viewless   
	public void geraRelatorio(final ServletContext context, HttpServletRequest request, HttpServletResponse response) throws Exception{   	    
		
		Connection conn = (Connection) ConnectionDB.getConnection();
		/*
		 * Codigo para consultar a lista
		 */
		
		//List<Categoria_sm> list = this.daoFactory.getCategoria_smDao().listatodascategoria();
		List<Categoria_sm> list = null;
		/*
		 * Final da consulta, retorna array para converter em pdf
		 */
		
		//Localiza o contexto da pasta onde esta localizado o .jasper
		String pathJasper = this.context.getRealPath("/ireport/") + "/"; 
		
		//Faz o mapeamento do context para levar o .jasper a conversao em bytes
		Map parametros = new HashMap();
		 parametros.put("SUBREPORT_DIR", pathJasper);
		try {
		//Recebe a lista do array populado
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1");
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2");
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3 "+pathJasper);
		//pega o ds + a conexao para ir ate o ireport para listar o array dentro do relatorio
		JasperPrint impressao = JasperFillManager.fillReport(pathJasper+"/rel_cat.jasper",parametros, ds);
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4");
		//converte o relatorio em bytes gerando o pdf
		byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
		byte[] arquivo = bytes;
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5");
		//Tratamento para exportacao do pdf para a url do browser e o tratamento de erros.
		String nomeDoArquivo = "rel_cat.pdf";
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6");
		response.setContentType("application/x-msdownload");
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7");
		response.setHeader("Content-Disposition", "attachment; filename=".concat(nomeDoArquivo));
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8");
		response.setContentLength(arquivo.length);
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9");
		ServletOutputStream sos = response.getOutputStream();
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA10");
		sos.write(arquivo, 0, arquivo.length);
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA11");
		sos.flush();
		System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA12");
		sos.close();
		} catch (Exception e) {
		if(e.getClass().getSimpleName().equals("AbortException")){
		System.out.println("Documento cancelado");
		} else{
		System.out.println("Outros");
		}
		}
		}

	
	
	
}

resultado impresso:

22:07:14,468 DEBUG SessionImpl:220 - opened session at timestamp: [telefone removido]
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3 C:\eclipse\workspace\cantinavirtual\web\ireport/
Outros
22:07:14,953 DEBUG SessionImpl:273 - closing session
22:07:14,953 DEBUG ConnectionManager:375 - connection already null in cleanup : no action

pelo que ví a linha JasperPrint impressao = JasperFillManager.fillReport(pathJasper+"/rel_cat.jasper",parametros, ds); não roda
Muito obrigado

R

Caro amigo luis, consegui passar daquelu ponto.
Eu havia colocado o .jasper dentro do web/WEB-INF/ireport e
ele somente achava o caminho web/ireport, alterei o local e passou
para a próxima parada:

java.lang.NoClassDefFoundError: com/lowagie/text/pdf/FontMapper
	net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:183)
	br.com.cantinavirtual.logic.Relatorio3_smLogic.geraRelatorio(Relatorio3_smLogic.java:70)

Está parecendo falta de biblioteca vou continuar na batalha, muito obrigado

R

Aquilo era falta do jar do itext, mas deu outro problema

java.lang.NullPointerException
response.setContentType(“application/x-msdownload”);

estou batalhando no problema.
brigadão

L

Coloca no construtor tambem

HttpServletRequest request, HttpServletResponse response

Mas onde você colocou o .jasper ficará disponivel no contexto da web.
Sugiro colocar junto as classes então

File rel = new File(RelatorioLogic.class.getResource("/relatorio.jasper").getFile().replaceAll("%20", "\u0020"));
String jasper = rel.getPath();

Assim no mesmo local onde esta a classe RelatorioLogic você coloca o .jasper

R

Farei do jeito que sugeriu, mas já é um alivio ver ele até “AAAAAAAAAAAAAAAAAAAA6”, mas agora o problema é outro veja o último post, por favor.
Muito obrigado

L

Dei uma olhada aqui, o response eu não tenho no construtor e sim dessa forma

@In
@Out
private HttpServletResponse response;

O seu projeto esta no inicio ainda? ou já esta mais adiantado?
Se estiver no inicio, seria interessante você passar para o vRaptor 3, pois tem algumas mudanças, inclusive nessas anotações.

R

Luis, o projeto está muito próximo de terminar.
Agora o relatório abre, mas está em branco.
O SQL que será usado na consulta é o que fica no .jasper?
estou passando a lista vazia:

//List<Categoria_sm> list = this.daoFactory.getCategoria_smDao().listatodascategoria();
List<Categoria_sm> list = null;

Luis, ainda estou com essa dúvida, pois na lógica não há consulta de SQL, somente no .jasper
Muito obrigado agradeço pelo seu tempo.

L

Roger,

Se você enviar a lista o relatório será montado com o que é enviado.

Em vez de usar assim:

JasperPrint impressao = JasperFillManager.fillReport(pathJasper+"/rel_cat.jasper",parametros, ds);

Eu tenho aqui assim:

response.setContentType("application/pdf");
String pdf = JasperRunManager.runReportToPdfFile(jasperFile, parameters, conn);
ClientOutput output = new ClientOutput(response);
FileInputStream stream = new FileInputStream(pdf);
output.setContent(stream);
R

Refiz o relatório, testei e o mesmo funciona beleza no Irport, abre o pdf sem problema nenhum,
mas pela aplicação a tela do pdf abre em branco, notei que o tamanho do pdf mesmo adicionando
mais um campo fica com o mesmo valor é como se ele não executasse a consulta que está no relatório,
tem algum modo de executar a consulta na lógica e gerar a lista e enviar para o .jasper?

R

Baixei a versão mais nova do ireport, refiz o relatório e continuo com o mesmo
problema, é como ele não entressa no .jasper, pois o tamanho do arquivo gerado
em

response.setContentLength(arquivo.length);
System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9 "+arquivo.length);

é o mesmo.
Quais são as libs para o relatório funcionar?

L

Roger,

Acho que somente esses:

jasperreports-xx.jar
iText-xx.jar

Tenta chamar a geração do relatório como eu ti passei no ultimo post.
Se você rodar direto pelo iReport e são geradas páginas, deveria gerar a mesma coisa chamando pela sua aplicação.

R

Luis, boa noite.
Eu tive que criar a classe ClientOutput e segui a recomendação do
vraptor,
O java pede para cria-la,

package org.vraptor.util;

/**
 * permite acesso para OutputStream and ContentType
 */
public class ClientOutput {

        private HttpServletResponse response;

        public ClientOutput(HttpServletResponse response) {
                super();
                this.response = response;
        }

        public ServletOutputStream getOutputStream() throws IOException {
                return response.getOutputStream();
        }

        public void setContentType(String type) {
                response.setContentType(type);
        }

}

mas está dando erro na linha
output.setContent(stream); diz que o método não está definido;
A classe é essa mesmo? vc poderia enviar a classe ClientOutput ou esse método?
Valeu brigadão e a luta continua.

L
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;

public class ClientOutput {

    private HttpServletResponse response;

    public ClientOutput(HttpServletResponse response) {
    	this.response = response;
    }
	public HttpServletResponse getResponse() {
		return response;
	}
    public ServletOutputStream getOutputStream() throws IOException {
    	return response.getOutputStream();
    }
    public void setContentType(String type) {
    	response.setContentType(type);
    }
	public void setHeader(String key, String value) {
		response.setHeader(key, value);
	}
	public void setContent(InputStream stream) {
		try {
			IOUtils.copyLarge(stream, response.getOutputStream());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
R

Agora a classe está assim

package br.com.cantinavirtual.logic;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.In;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Out;
import org.vraptor.annotations.Viewless; 
import br.com.cantinavirtual.dao.DaoFactory;
import br.com.cantinavirtual.modelo.Categoria_sm;
import br.com.cantinavirtual.util.ClientOutput;
@Component()
@InterceptedBy({AutorizadorInterceptor.class,DaoInterceptor.class})
public class Relatorio3_smLogic {
@In  
@Out  
private HttpServletResponse response;
	public Relatorio3_smLogic(DaoFactory daoFactory,ServletContext context) {
	 this.daoFactory = daoFactory;   
	 this.context = context;   
	}    
		private final DaoFactory daoFactory;   
		private final ServletContext context; 
	@Viewless    	    
	public void geraRelatorio(final ServletContext context, HttpServletRequest request) throws Exception{	
		Connection conn = (Connection) ConnectionDB.getConnection();
		List<Categoria_sm> list = null;
		String pathJasper = this.context.getRealPath("/ireport/") + "/"; 
		Map parametros = new HashMap();
		//parametros.put("descricao", pathJasper);
		try {			
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
		response.setContentType("application/pdf");  
		String pdf = JasperRunManager.runReportToPdfFile(pathJasper+"/teste1.jasper", parametros, conn);  
		ClientOutput output = new ClientOutput(response);  
		FileInputStream stream = new FileInputStream(pdf);  
		output.setContent(stream); 
		//JasperPrint impressao = JasperFillManager.fillReport(pathJasper+"/teste1.jasper",parametros, ds);
		//byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
		//byte[] arquivo = bytes;
		//String nomeDoArquivo = "teste1.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");
		}
		}
		}

}

Está aparecendo esse erro

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: net.sf.jasperreports.engine.component.DefaultComponentManager.setDesignConverter(Lnet/sf/jasperreports/engine/component/ComponentDesignConverter;)V
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:95)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NoSuchMethodError: net.sf.jasperreports.engine.component.DefaultComponentManager.setDesignConverter(Lnet/sf/jasperreports/engine/component/ComponentDesignConverter;)V
	net.sf.jasperreports.components.ComponentsExtensionsRegistryFactory.<clinit>(ComponentsExtensionsRegistryFactory.java:99)
	java.lang.Class.forName0(Native Method)
	java.lang.Class.forName(Unknown Source)
	net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:161)
	net.sf.jasperreports.engine.util.JRClassLoader.loadClassForName(JRClassLoader.java:119)
	net.sf.jasperreports.engine.util.ClassUtils.instantiateClass(ClassUtils.java:57)
	net.sf.jasperreports.extensions.DefaultExtensionsRegistry.instantiateRegistry(DefaultExtensionsRegistry.java:211)
	net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:188)
	net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:141)
	net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:127)
	net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:104)
	net.sf.jasperreports.engine.util.JRQueryExecuterUtils.getQueryExecuterFactory(JRQueryExecuterUtils.java:57)
	net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:664)
	net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:588)
	net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1212)
	net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:842)
	net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:791)
	net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
	net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
	net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:65)
	br.com.cantinavirtual.logic.Relatorio3_smLogic.geraRelatorio(Relatorio3_smLogic.java:70)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:117)
	org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:37)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:131)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:58)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	br.com.cantinavirtual.logic.DaoInterceptor.intercept(DaoInterceptor.java:19)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	br.com.cantinavirtual.logic.AutorizadorInterceptor.intercept(AutorizadorInterceptor.java:28)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:38)
	org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
	org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:90)
	org.vraptor.core.DefaultController.execute(DefaultController.java:42)
	org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
L

java.lang.NoSuchMethodError

Acredito que pode ser versão de alguma lib que não é compativel com outra.

L

Roger,

Acho que você compilou o arquivo jasper no iReport para uma versão mais nova que a versão que você tem no seu projeto.
Procure dentro do diretório do iReport por jasperreports-3.6.0.jar, acho que você disse que era o 3.6 que estava usando, então deve ser mais ou menos assim.

Não é gerado o erro class no found pq a classe existe só não tem o método que é procurado, por isso java.lang.NoSuchMethodError.

Isso é o que eu entendi.

Blz?! Qualquer avisa ai…

R

Luis funcionou!!!
Eu usei o Ireport 3.6 para gerar o relatório e
copiei as bibliotecas do Ireport :
commons-collections-3.2.1
commons-digester-1.7
commons-logging-1.1
iText-2.1.0
jasperreports-3.6.0
commons-beanutils-1.8.0

Agradeço a sua paciencia e boa vontade em resolver esse problema, já estava arrancando os poucos cabelos que tenho.
Valeu mesmo agora vou começar a preparar os outros relatórios e funcionarão com certeza!!!
:smiley:

Criado 13 de outubro de 2009
Ultima resposta 20 de out. de 2009
Respostas 34
Participantes 3