Conectar iReport com javaBeans

5 respostas
M

Boa noite,
Preciso conectar o meu ireport com meu projeto java, feito em JPA 1.0 utilizando um entity manager.
Já joguei o .jar com as classes no diretório libs do ireport (C:\Program Files\Jaspersoft\iReport-3.7.4\ireport\libs)
e adicionei o .jar no classpath dentro do ireport.
Mas não consigo definí-lo como um datasource no ireport, pois no teste de conexão, ele diz que não encontra a classe.
Estou definindo a classe VisualizarInscricoesReport, que é a classe com o método:

@SuppressWarnings("finally")
		public static ArrayList<Inscricao> getBeanCollection(String codTurma){

			InscricaoRepositorio repositorio = RepositorioFabrica.
				getInscricaoRepositorio();
			ArrayList<Inscricao> inscricoes = null;
			try {
				inscricoes = repositorio.obterInscricoesPorTurma(codTurma);
			} catch (RepositorioException e) {
				JOptionPane.showMessageDialog(null, "Problema gerando relatório", 
						"Erro", JOptionPane.ERROR_MESSAGE);
			}
			finally{
				return inscricoes;
			}
		}

O problema é que o ireport não reconhece nenhuma classe (ClassNotFoundError).

Preciso muitíssimo de ajuda.

5 Respostas

M

Por favor! Preciso muito de ajuda com isso!

P

Bom-Dia mackmak,

Rapaz, geralmente eu passo o .jasper para o bean, preencho-o e gero o print a ser exibido.

JasperReport jasper = (JasperReport) JRLoader.loadObject(caminhoDoJasper);
Map map = new HashMap();
JasperPrint print = JasperFillManager.fillReport(jasper, map);
M

Já que você mencionou, a classe é a seguinte:

public class VisualizarInscricoesReport {


		private static final Logger logger = Logger
				.getLogger(ProfessoresPorTitulacaoReport.class.getName());

		private static final String REPORT_DIRECTORY = "./reports";
		private static final String FILE_NAME = "VisualizarAvaliacoes"; 
		private static final String EXTENSION_NAME = ".jasper";
		private static final String EXTENSION_PRINT = ".jrprint";
		
		private static final String SAVE_PATH = REPORT_DIRECTORY + "/" + FILE_NAME ;
		
		/*private static final String DRIVER = "org.hsqldb.jdbcDriver";
		private static final String URL = "jdbc:hsqldb:hsql://localhost/SCADB";
		private static final String USUARIO = "sa";*/
		
		

		public void exibir(String codTurma) throws InvocationTargetException{
			try{

				Map<String, Object> parameterMap = new HashMap<String, Object>();

				parameterMap.put("turmaParam", codTurma);
//				 logger.debug("Compilação");
//				 JasperCompileManager.compileReportToFile(SAVE_PATH);

				//ArrayList<Inscricao> inscricoes = 
				logger.debug("Preenchimento");
				JasperFillManager.fillReportToFile(SAVE_PATH  + EXTENSION_NAME,
						parameterMap, new JRBeanCollectionDataSource(
								getBeanCollection(codTurma)));

				logger.debug("Exibição");
				File file = new File(SAVE_PATH + EXTENSION_PRINT);
				JasperPrint jasperPrint;
				jasperPrint = (JasperPrint) JRLoader.loadObject(file);
				JasperViewer.viewReport(jasperPrint, false);
			}
			catch (JRException e) {

				JOptionPane.showMessageDialog(null, "Erro na compilação do relatório.");
				
				e.printStackTrace();
				
				logger.error("Relatório de avaliação por aluno.", e);
				JOptionPane.showMessageDialog(null,
						"Houve um erro durante a produção do relatório de avaliação: \n" + 
						e.getMessage(), "SCA",
						JOptionPane.ERROR_MESSAGE);
			}
		}
		
		@SuppressWarnings("finally")
		public static ArrayList<Turma> obterSemestesPorAluno(String matriculaAluno){

			TurmaRepositorio repositorio = RepositorioFabrica.
				getTurmaRepositorio();
			ArrayList<Turma> lista = null;
			try {
				lista = repositorio.obterTurmasPorAluno(matriculaAluno);
			} catch (RepositorioException e) {
				JOptionPane.showMessageDialog(null, "Problema gerando relatório", 
						"Erro", JOptionPane.ERROR_MESSAGE);
			}
			finally{
				return lista;
			}
		}

		@SuppressWarnings("finally")
		public static ArrayList<Inscricao> getBeanCollection(String codTurma){

			InscricaoRepositorio repositorio = RepositorioFabrica.
				getInscricaoRepositorio();
			ArrayList<Inscricao> inscricoes = null;
			try {
				inscricoes = repositorio.obterInscricoesPorTurma(codTurma);
			} catch (RepositorioException e) {
				JOptionPane.showMessageDialog(null, "Problema gerando relatório", 
						"Erro", JOptionPane.ERROR_MESSAGE);
			}
			finally{
				return inscricoes;
			}
		}
		


}
P

Cara, vê se você consegui visualizar o seu relatório dessa forma.

public void exibir(String codTurma) throws InvocationTargetException{ try{ Map<String, Object> parameterMap = new HashMap<String, Object>(); parameterMap.put("turmaParam", codTurma); ArrayList<String> listaInscricao = getBeanCollection(codTurma); JRBeanCollectionDataSource jrBean = new JRBeanCollectionDataSource(listaInscricao); JasperPrint jasperPrint = JasperFillManager.fillReportToFile(SAVE_PATH + EXTENSION_NAME, parameterMap, jrBean); JasperViewer viewer = new JasperViewer(jasperPrint); viewer.setVisible(true); } catch (JRException e) {...} }

Qualquer coisa posta o erro…

Vlw.

L

se vc vai usar JRBeanCollectionDataSource , vc naum precisa configurar nenhum tipo de conexao no relatorio no ireport,e so passar a collection e boa .

Criado 3 de agosto de 2010
Ultima resposta 5 de ago. de 2010
Respostas 5
Participantes 3