[Resolvido]Problemas ao Utilizar JReport + Ireport + JRDataSource

Boa tarde, companheiros de trabalho.

Estou com o seguinte problema. eu estou desenvolvimento que precisa gerar um relatorio a partir de uma collection mais especificamente uma List. é um relatorio simples se tratando de consulta mas isso não vem ao caso.

eu estou gerando uma classe que cria a interface JRDatasource.

public class LotacaoJRDataSource implements JRDataSource{

	private Iterator<Lotacao> iterator;
	
	private Lotacao cursor;
	
	public LotacaoJRDataSource(List<Lotacao> list) {
		iterator = list.iterator();
	}
	
	@Override
	public Object getFieldValue(JRField nome) throws JRException {
		Lotacao lotacao = cursor;
		if(nome.getName().equals("Código")){
			return lotacao.getCodigo();
		}
		if(nome.getName().equals("Nome")) {
			return lotacao.getNome();
		}
		if(nome.getName().equals("Gestor")){
			List<Gestor> listGestor = lotacao.getGestor();
			String gestores ="";
			for(Gestor gestor: listGestor){
				gestores = gestores + gestor.getNome() + "\n";
			}
			return gestores;
		}
		return null;
	}
	@Override
	public boolean next() throws JRException {
		boolean retorno = iterator.hasNext();
		if(retorno){
			cursor = iterator.next();
		}
		return retorno;
	}	
}

E uma classe que implementa uma factory para ser acessada junto ao ireport.

public class LotacaoJRDataSourceFactory  {
	private static JRDataSource data;
	private static List<Lotacao> listLotacao;
		
	public static JRDataSource createDatasource() {
		if (data == null) {
			
			data = new LotacaoJRDataSource(listLotacao);
		}
		return data;
	}

	public static List<Lotacao> getListLotacao() {
		return listLotacao;
	}

	public static void setListLotacao(List<Lotacao> listLotacao) {
		LotacaoJRDataSourceFactory.listLotacao = listLotacao;
	}	
}

Acredito que até aqui tudo bem. o problema me ocorre quando eu tento setar a classe factory no classpath do ireport. eu estou jogando diretamente a pasta onde está o arquivo e o metodo que é usado no ireport. acontece que o ireport lança um NoClassDefFoundError quando eu tento testar minha classe. e assim ela não encontra as variaveis que deveria encontrar para compilar meu relatorio. o que torna impossivel realizar esse pequeno relatorio no JasperReport. o que poderia fazer para acessar a minha factory. ja tentei de todas as formas que pude e não obtive exito. caso exista uma forma melhor de trabalhar com o JReport, pode sugerir tambem.

Obrigado desde já.

UP. pesquisei muito e ainda não achei uma solução. :shock:

Pra quem está com o mesmo problema, descidi usar a hibernate datasource que resolveu meus problemas, na verdade, o problema era que eu não estava setando tambem no classpath o caminho onde estavam meus beans, logo o sistema não reconhecia eles.

espero que ajude alguem futuramente.

ola silver,
estou com um problema parecido com o seu, mas eu ja uso hibernate.

VEJA COMO ESTA

package vixsoft.rh.moduloInterfaces.interfaces;

import net.sf.jasperreports.engine.JRDataSource;

import javax.ejb.Local;

@Local
public interface IHibernateDataSource extends JRDataSource {

}


package vixsoft.rh.moduloInterfaces.interfaces;

import javax.ejb.Local;

@Local
public interface IEfetivoBean {
public String executaFuncao(String funcao, String pacoteDados, String pacoteToken);

public IHibernateDataSource executaFuncaoRelatorio(String funcao, String pacoteDados, String pacoteToken);

}

*******************************************************************************************************8

REPORTA ESSE ERRO ABAIXO; NO BROWSE

java.lang.ClassCastException: vixsoft.rh.moduloUtils.utils.HibernateQueryResultDataSource cannot be cast to vixsoft.rh.moduloInterfaces.interfaces.IHibernateDataSource
$Proxy515.executaFuncaoRelatorio(Unknown Source)
br.com.vixsoft.rh.servlet.Relatorio.service(Relatorio.java:53)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

ALGUEM PODE ME AJUDAR SOBRE ESSE PROBLEMA?