Jasper 报告逻辑条件未从 Netbeans 执行:“未找到函数”错误
Posted
技术标签:
【中文标题】Jasper 报告逻辑条件未从 Netbeans 执行:“未找到函数”错误【英文标题】:Jasper Reports Logic Conditions not executing from Netbeans: "Function IF not found" error 【发布时间】:2014-07-15 15:10:59 【问题描述】:我正在使用 Jaspersoft Studio 设计我的报告,然后从 Netbeans 执行它们。
我有一个子报表,它将返回值传递给主报表,然后将其添加到主报表中的一个值中以形成总计。
在主报告中,我用 2 个值填充一个文本字段,在文本字段表达式中,我将它们加在一起以获得总计。
来自主报告的变量 - $VSubTotal2
来自子报告的变量 - $VSubTotal1
我遇到的问题是……
当我将表达式编写为 $VSubTotal1 + $VSubTotal2 时,它在 Netbeans 中执行报告时成功。
但是,我需要检查 Subtotal2 是否不为空,所以我需要在其中添加一个 IF 语句,如下所示 -
IF($VSubTotal1==null,0.00,$VSubTotal1) + $VSubTotal2
在 JasperSoft Studio 中使用“预览”选项时,它工作正常,我可以查看报告,但是通过 netbeans 执行它时出现以下错误
Error evaluating expression :
Source text : IF($VSubTotal1==null,0.00,$VSubTotal1) + $VSubTotal2
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : IF($VSubTotal1==null,0.00,$VSubTotal1) + $VSubTotal2
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:244)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591)
at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559)
at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:1016)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:504)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:488)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:456)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2057)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillGroupFooter(JRVerticalFiller.java:943)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillGroupFooters(JRVerticalFiller.java:809)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportEnd(JRVerticalFiller.java:317)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:158)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:939)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:852)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:87)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:276)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745)
at nmtbatchservice.jasperreporting.JasperReportGenerator.generateReport(JasperReportGenerator.java:53)
at nmtwebservice.reporting.BillIssuerReport.generateReport(BillIssuerReport.java:178)
at nmtbatchservice.NMTBatchService2.main(NMTBatchService2.java:155)
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Function IF not found
at net.sf.jasperreports.compilers.GroovyEvaluator.functionCall(GroovyEvaluator.java:73)
有什么想法吗?正如我所说 - 它可以通过 Jasper Studio 工作,但在我使用 netbeans 时不能工作。
【问题讨论】:
【参考方案1】:问题已解决 - 我需要将 jasperreports-functions-5.2.0.jar 添加到我在 Netbeans 中的项目中。请注意,该 Jar 还需要 Joda.org 库 http://joda-time.sourceforge.net/installation.html
【讨论】:
以上是关于Jasper 报告逻辑条件未从 Netbeans 执行:“未找到函数”错误的主要内容,如果未能解决你的问题,请参考以下文章
如何避免获取java.lang.NoClassDefFoundError:org / apache / commons / logging / LogFactory