我正在使用Jaspersoft Studio开发一些报告。
我有一个Web应用程序,应该接受REST查询,并将其转换为已编译的报告。
因此,我有一些JasperReports jar :
问题是,当我编译报告并从Jaspersoft Studio运行时,它可以正常工作。
但是,当我从Web应用程序编译并运行它时,它会抛出异常:
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : CONCATENATE($V{startString}, " - ", $V{endString})
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)
...
Caused by: net.sf.jasperreports.engine.JRRuntimeException: Function CONCATENATE not found
当我在报告中更改
CONCATENATE
调用时,它可以正常工作。因此,这给了我一个解决方案,使我错过了一个JasperReports jar ,但是哪个 jar 呢?
最佳答案
您还应该将jasperreports-functions-5.2.0.jar添加到您的类路径中。
该库包含带有CONCATENATE函数的net.sf.jasperreports.functions.standard.TextFunctions类。
您可以在http://jaspersoft.artifactoryonline.com/jaspersoft/jr-ce-releases Maven存储库中找到此工件。
我的测试pom.xml中的代码片段:
<repositories>
<repository>
<id>jr-ce-releases</id>
<url>http://jaspersoft.artifactoryonline.com/jaspersoft/jr-ce-releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-functions</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
net.sf.jasperreports.jasperreports-functions:5.2.0工件取决于joda-time.joda-time:2.1工件-您还应该将joda-time-2.1.jar添加到类路径中
注意:
您可以在Custom Functions in Report Expressions文章中找到更多信息