Entonces, el método existe. Me dice que el método existe. Pero cuando llamo al método con el argumento que quiere, obtengo un error.

groovy.lang.MissingMethodException:
No signature of method: static net.sf.jasperreports.engine.JasperExportManager.exportToPdf() 
is applicable for argument types:

(net.sf.jasperreports.engine.JasperPrint) 

values: [net.sf.jasperreports.engine.JasperPrint@1effe1]

Possible solutions: exportToPdf(net.sf.jasperreports.engine.JasperPrint)

Me estoy perdiendo algo facil, seguro

 //custom class
 def normalized = new NormalizedData(instance);
 def json = normalized as JSON;
 def fileName = "SLDATA_${instance.id}.pdf";
 String reportPath = confHolder.config.jasper.dir.reports + "/main.jasper"

 InputStream byteIn = new byteArrayInputStream(json.toString().getBytes())
 JsonDataSource reportJSON = new JsonDataSource(byteIn)

 JasperPrint report = JasperFillManager.fillReport(reportPath, [:], reportJSON)

 FileUtils.writeByteArrayToFile(
    new File("${conf.outputDir}/${fileName}"),
    JasperExportManager.exportToPdf(report)
 )
1
user2782001 13 ene. 2017 a las 07:25
1
Te perdiste el static. Aparentemente, no está asociando la llamada al método con una instancia apropiada.
 – 
chrylis -cautiouslyoptimistic-
13 ene. 2017 a las 07:44
Bingo. exportToPdf no es estático, exportReportToPDf sí lo es. Mirando la pantalla demasiado tiempo.
 – 
user2782001
13 ene. 2017 a las 08:06
Esta no es una mala pregunta si se desarrolla correctamente, y estaré feliz de escribir una respuesta adecuada si incluye el fragmento de código que dio lugar a este error.
 – 
chrylis -cautiouslyoptimistic-
13 ene. 2017 a las 08:11

1 respuesta

La mejor respuesta

Si observa con atención, verá static en la firma proporcionada en el mensaje de error; la solución sugerida es un método no estático que requiere una instancia como receptor. Usar @TypeChecked o @CompileStatic cuando sea práctico ayudará a prevenir errores como este.

En este caso específico, JasperExportManager tiene algunas versiones estáticas y otras no estáticas de sus métodos. La solución es cambiar

   JasperExportManager.exportToPdf(report)

Para

   JasperExportManager.exportReportToPdf(report)
1
chrylis -cautiouslyoptimistic- 13 ene. 2017 a las 08:44