所以,该方法存在。它告诉我方法存在。但是当我用它想要的参数调用方法时,我得到一个错误..
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)
我错过了一些简单的东西,当然
//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)
)
答案 0 :(得分:1)
如果仔细查看,您会在错误消息中提供的签名中看到static
;建议的解决方案是一种非静态方法,需要一个实例作为接收者。在实际使用@TypeChecked
或@CompileStatic
将有助于防止此类错误。
在此特定实例中,JasperExportManager
具有一些静态版本和一些非静态版本的方法。修复是改变
JasperExportManager.exportToPdf(report)
到
JasperExportManager.exportReportToPdf(report)