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.