NoClassDefFoundError no iReport [Resolvido]

Bom dia a todos,
Estou recebendo a seguinte exceção ao tentar compilar um relatório a partir de uma classe java:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at net.sf.jasperreports.engine.JasperCompileManager.getCompiler(JasperCompileManager.java:472)
	at net.sf.jasperreports.engine.JasperCompileManager.loadEvaluator(JasperCompileManager.java:238)
	at net.sf.jasperreports.engine.fill.JRFillDataset.createCalculator(JRFillDataset.java:421)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:428)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:76)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:86)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:56)
	at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
	at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:78)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
	at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:513)
	at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:465)
	at sca.app.VisualizarAvaliacoesReport.exibir(VisualizarAvaliacoesReport.java:51)
	at sca.app.VisualizarAvaliacoesPresenter.actionPerformed(VisualizarAvaliacoesPresenter.java:176)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationFailedException
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	... 44 more

A classe é seguinte (o erro ocorre na linha 51):

package sca.app;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import org.apache.log4j.Logger;
import sca.domain.SemestreLetivo;
import sca.domain.Turma;
import sca.domain.repositorio.RepositorioException;
import sca.domain.repositorio.RepositorioFabrica;
import sca.domain.repositorio.SemestresCursadosRepositorio;
import sca.domain.repositorio.TurmaRepositorio;

public class VisualizarAvaliacoesReport {
	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 SAVE_PATH = REPORT_DIRECTORY + "/" + FILE_NAME 
	+ EXTENSION_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(Long alunoId, String turmasId){
		try{

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

			parameterMap.put("idAlunoParam", alunoId);
			parameterMap.put("idTurmaParam", turmasId);
//			 logger.debug("Compilação");
//			 JasperCompileManager.compileReportToFile(SAVE_PATH);

			logger.debug("Preenchimento");
			JasperFillManager.fillReportToFile(SAVE_PATH ,
					parameterMap, new JRBeanCollectionDataSource(
							getBeanCollection(alunoId)));

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

			JOptionPane.showMessageDialog(null, e.getMessage());
			
			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 List<SemestreLetivo> getBeanCollection(Long aluno){

		SemestresCursadosRepositorio repositorio = RepositorioFabrica.
			getSemestresCursadosRepositorio();
		List<SemestreLetivo> lista = null;
		try {
			lista = repositorio.obterSemestresCursados(aluno);
		} catch (RepositorioException e) {
			JOptionPane.showMessageDialog(null, "Problema gerando relatório", 
					"Erro", JOptionPane.ERROR_MESSAGE);
		}
		finally{
			return lista;
		}
	}
}

Acabei de importar os .jars do itext-2.1.7.jar, jasperreports-3.1.7.jar e xalan.jar no projeto.
Também fiz a importação do eclipse, adicionando os jars pelas propriedades do projeto/java build path/aba libraries/add jar.
Sou novato nessa questão de importar jars e também no ireport, mas o compilador não acusa nenhum problema e importou as APIs normalmente.

Grato.

Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationFailedExceptionFalta o jar do groovy no seu classpath: http://www.findjar.com/class/org/codehaus/groovy/control/CompilationFailedException.html

Quando for assim, use o findjar para localizar através da classe qual é o jar que falta.

Flw! :thumbup:

Para não ter que importar mais uma biblioteca na sua aplicação (groovy), altere a linguagem configurada no seu report para java.

Muito obrigado, Juliano. Era isso mesmo.
O jar do grooy eu peguei do diretório do ireports, mesmo. Eu que não sabia que precisaria dele.

Aproveitando o gancho…
Agora que apresenta o seguinte erro:

Error retrieving field value from bean : NOME

Provavelmente este NOME é o campo nome da consulta:

SELECT
        a.nome,
        d.nome,
        t.codigo,
        t.ano,
        t.periodo,
        i.ID,
        i.NOTAP1,
        i.NOTAP2,
        i.NOTAP3,
        i.FREQUENCIA,
        i.TURMA_ID,
        i.ALUNO_ID,
        CASE WHEN NOTAP1 + NOTAP2 >= 14 THEN (NOTAP1 + NOTAP2)/2
             ELSE (NOTAP1+NOTAP2+NOTAP3)/3
        END AS MEDIA,
        CAST(ANO AS VARCHAR(4)) + PERIODO AS GRUPO
            FROM INSCRICAO i,ALUNO a,turma t,disciplina d
            WHERE i.ALUNO_ID = a.ID AND i.TURMA_ID = t.id AND t.disciplina_id = d.id
             AND a.id = $P{idAlunoParam} AND t.id IN ($P!{idTurmaParam})

que está no relatório e que estou usando como um field, o que está acontecendo?

Não sei se é isso, mas tente criar um alias na consulta, algo como:

Select a.nome as aluno_nome, d.nome as disciplina_nome, ...
Flw! :thumbup:

Não, o problema é esse. Ele não está aceitando os nomes dos campos nem aliases.