jueves, 29 de abril de 2010

iReport - java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException

Un error bastante habitual que se produce cuando trabajamos con la herramienta iReports, creo que a partir de la versión 3 (en mi caso concreto, la 3.7.0).

Cuando creamos un informe con esta herramienta, podemos encontrarnos con el siguiente error al compilar:



java.lang.NoClassDefFoundError: org/codehaus/groovy/control/CompilationFailedException


La causa es tan simple como que el lenguaje seleccionado para el informe es, por defecto, Groovy en lugar de Java. Para solucionarlo seleccionamos nuestro report (el elemento raíz de la vista Report Inspector), y entre las propiedades editamos el valor de Language.

Para evitar tener que realizar este cambio con todos los nuevos informes que generemos, lo suyo es elegir Java como lenguaje predeterminado para nuestro iReports. Esto podemos hacerlo a través del menú Herramientas - Opciones, en la pestaña iReport - General (la que veremos al acceder al menú).

50 comentarios:

  1. GRacias amigo, me ayudaste a que mi cerebro funcionara, un abrazo! desde Puebla, Mexico :D

    ResponderEliminar
  2. Pa eso estamos amigo!
    Gracias por comentar :D

    ResponderEliminar
  3. Muy buena la aportación me ha ayudado bastante. Gracias.

    ResponderEliminar
  4. Muchas Gracias, me ha servido de mucha ayuda.

    Un saludo. Roberto

    ResponderEliminar
  5. Muchisimas gracias, directo al punto, me salvaste...

    ResponderEliminar
  6. Absolutamente cierto y demás de concreto! +10 :)

    ResponderEliminar
  7. Un crack. Muchas gracias

    ResponderEliminar
  8. Excelente, me ha servido de mucho, gracias por la información xD, saludos Chanfu

    ResponderEliminar
  9. disculpa . ya hize el cmbio
    pero al momento de presionar el boton par ver el reporte
    no me arroja nada, ni un error ni nada ...

    alguna idea??
    gacias!

    ResponderEliminar
  10. Buenas, normalmente si el informe aparece en blanco es porque la consulta no ha devuelto resultados. ¿Puede ser tu caso?

    ResponderEliminar
  11. no.... lo que pasa es que no abre la hoja donde deberia de aparecer el reporte


    mira te dejo mi codigo:


    try{
    String rutaInforme = "C:\\report\\report4.jasper";
    JOptionPane.showMessageDialog(null,"1");
    JasperPrint informe = JasperFillManager.fillReport(rutaInforme,null,NuevaConexon);
    JOptionPane.showMessageDialog(null,"2");
    JasperViewer ventanavisor = new JasperViewer(informe,false);
    JOptionPane.showMessageDialog(null,"3");
    ventanavisor.setTitle("informe");
    JOptionPane.showMessageDialog(null,"4");
    ventanavisor.setVisible(true);
    JOptionPane.showMessageDialog(null,"5");

    }
    catch (Exception e)
    {
    System.out.println(e);
    }


    Con los siguientes imports:

    import javax.swing.JOptionPane;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.view.JasperViewer;
    import java.sql.*;

    ResponderEliminar
  12. agrege
    en el catch la linea de
    System.out.println(e);

    la cual me arroja el siguiente error:

    net.sf.jasperreports.engine.JRException: Error executing SQL statement for : report4


    espero me puedas ayudar ! gracias!!!

    ResponderEliminar
  13. Pues ese error lo que indica es que ha habido un error ejecutando la consulta SQL del informe. Cógete la consulta y ejecútala directamente en algún entorno SQL a ver si te da algún error concreto.

    ResponderEliminar
  14. Muchas gracias, muy bien explicado y muy claro

    ResponderEliminar
  15. Excelente amigo, muchas gracias me has ayudado a resolver este problema

    ResponderEliminar
  16. holaa tengo una duda, espero me puedan ayudar

    en el editor de expresiones pongo la siguiente linea

    ($F{entregado}.equalsIgnoreCase("true")?"si":"no")


    quiero que cuando sea true , se muestre en el reporte un "si", de lo contrario un no , pero me marca un error , no se que pueda ser


    me sale todo eso:

    Error filling print... Error evaluating expression :      Source text : ($F{entregado}.equalsIgnoreCase("true")?"si":"no")
    net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :      Source text : ($F{entregado}.equalsIgnoreCase("true")?"si":"no")      at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:195)      at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:589)      at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:557)      at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:929)      at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:383)      at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368)      at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)      at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2036)      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845)      at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)      at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)      at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)      at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:878)      at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)      at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)  Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.Boolean.equalsIgnoreCase() is applicable for argument types: (java.lang.String) values: [true]      at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:54)      at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46)      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)      at Entrega_1317137264781_208428.evaluate(calculator_Entrega_1317137264781_208428:235)      at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:182)      ... 19 more 
    Print not filled. Try to use an EmptyDataSource...

    ResponderEliminar
  17. Por favor, para este tipo de consultas usa el formulario de contacto, así puedo responderte directamente.
    Gracias!

    ResponderEliminar
  18. Conciso, claro y preciso, un fenómeno!!!

    ResponderEliminar
  19. Ricardo:
    de que gran a puro me sacaste gracias hermano

    ResponderEliminar
  20. SUPERO AYUDA HERMANO. TE LO AGRADESCO NO SABES CUANTO.. HABIA PASAADO ROMPIENDOME LA CABEZA DURANTE 1 MES BUSCANDOLE LA SOLUCION.. CAMBIANDO LAS LIBRERIAS.. JEJEJE GRACIASS BRO!!!

    ResponderEliminar
  21. Muchas gracias, solucionó mi problema. :)

    ResponderEliminar
  22. Muchas gracias, has explicado muy bien, la causa y la solución de la excepción

    ResponderEliminar
  23. muchas graciasssssssssss

    ResponderEliminar
  24. Dios.. un dia entero perdido por semejante estupidez.. Muchas Gracias.. Resolvio mi problema..

    ResponderEliminar
  25. Excelente, me salvaste de romperme la cabeza un buen rato

    ResponderEliminar
  26. Gran aportación en verdad

    ResponderEliminar
  27. Hola a mi me sale language= SQL pero no groovy en el archivo del reporte, alguna otra causa por la que suceda este error? como se llama la linea especifica? ya hize los cambies en el ireport a lenguaje java cree nuevos reportes y aun me sale este error, un saludo!

    ResponderEliminar
  28. Ya lo he encontrado, muchas gracias por su ayuda

    ResponderEliminar
  29. Excelente lleva buen rato buscando la libreria grooby

    ResponderEliminar
  30. Gracias amigo, despues de tanto tiempo sigues vigente. Gracias por tu ayuda...


    ResponderEliminar
  31. ¡Muchas gracias! Me ahorraste romperme la cabeza para encontrar el problema.

    ResponderEliminar
  32. Gracias ya no sabia que hacer con este error!

    ResponderEliminar
  33. groso! verdadera aspirina!

    ResponderEliminar
  34. Graciass!!!!! no tenia idea porque podia ser ese errorr!!!!

    ResponderEliminar
  35. Gracias hermano!!! un abrazo desde Argentina.!!

    ResponderEliminar
  36. gracias. resolvio mi priblema. saludos desde Costa Rica

    ResponderEliminar
  37. jeje,, que problemita este. Muchas gracias :-D

    ResponderEliminar
  38. Gracias tambien me salvaste de un hoyo

    ResponderEliminar
  39. Muchas gracias, excelente aporte... funciono perfecto

    ResponderEliminar
  40. Que buen Dato!!!! me fue de gran ayuda. Gracias desde Venezuela

    ResponderEliminar
  41. Muchas gracias. Saludos desde Venezuela.

    ResponderEliminar

Cualquier aportación será bienvenida