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 
Ireport x vraptor2
34 Respostas
Amigos,gostaria de saber se funciona vraptor2 com ireport, ou se existe alguma outra forma de gerar relatório.
Muito obrigado
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
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.
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.
Roger,
Da uma olhada nesse link.
http://www.guj.com.br/posts/list/122447.java#662399
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
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.
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?
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.
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? 
Muito obrigado pela atenção e dicas, pois estava perdido.
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.
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.
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/") + "/";
Você esta recebendo o context null, certo?
Acho que deveria ter um filter ou interceptor para receber ServletContext contextUma 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
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?
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
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
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
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
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
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
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
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.
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.
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);
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?
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?
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.
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.
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();
}
}
}
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)
java.lang.NoSuchMethodError
Acredito que pode ser versão de alguma lib que não é compativel com outra.
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…
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!!!
