gpt4 book ai didi

java - 填充编译报告时 JasperReports 隐藏异常

转载 作者:行者123 更新时间:2023-11-30 09:22:49 24 4
gpt4 key购买 nike

我正在使用 JasperReports 5.0.0 在我的 Java 应用程序中生成报告。
当我从 .jrxml 文件加载和编译报告时没有问题。
但是当我尝试从编译报告(.jasper 文件)加载它们时,它毫无异常(exception)地停止操作!
我用一个 try 语句包围了 JasperFillManager.fillReport 语句,像这样捕获 Throwable:

jasperReport = (JasperReport) JRLoader.loadObject(new FileInputStream(new File(Main.jarpath,Main.REPORT_TEMPLATE)));
try{
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRBeanCollectionDataSource(data));
}catch(Throwable ex){
ex.printStackTrace();
}

现在它打印这个异常:

java.lang.NoSuchMethodError: groovy.lang.MetaClassImpl.createPogoCallCurrentSite(Lorg/codehaus/groovy/runtime/callsite/CallSite;Ljava/lang/Class;[Ljava/lang/Object;)Lorg/codehaus/groovy/runtime/callsite/CallSite;
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallCurrentSite(CallSiteArray.java:108)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at pe_report_1367344395908_105126.customizedInit(calculator_pe_report_1367344395908_105126:87)
at net.sf.jasperreports.engine.fill.JREvaluator.init(JREvaluator.java:88)
at net.sf.jasperreports.engine.fill.JRCalculator.init(JRCalculator.java:111)
at net.sf.jasperreports.engine.fill.JRFillDataset.initCalculator(JRFillDataset.java:469)
at net.sf.jasperreports.engine.fill.JRBaseFiller.<init>(JRBaseFiller.java:529)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:88)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:103)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.<init>(JRVerticalFiller.java:61)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:153)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:82)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:653)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:969)
at pe.reporting$1.doInBackground(reporting.java:75)
at pe.reporting$1.doInBackground(reporting.java:41)
at javax.swing.SwingWorker$1.call(SwingWorker.java:278)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at javax.swing.SwingWorker.run(SwingWorker.java:317)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

问题是什么?

最佳答案

这是一个与 groovy jar 相关的类路径问题。如果您在表达式中使用 groovy,则需要将 groovy jar 添加到类路径中。

要找到您需要的,最简单的方法是:

如果您没有在报告中使用 groovy,您可以简单地完全删除 jrxml 中 jasperReport xml 标记中的 language 属性。这(至少在旧版本中)将其默认为表达式的 java 用法。

关于java - 填充编译报告时 JasperReports 隐藏异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16307414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com