我正在使用Jaspersoft Studio开发一些报告。
我有一个Web应用程序,应该接受REST查询,并将其转换为已编译的报告。
因此,我有一些JasperReports jar :

  • groovy-all-2.0.1.jar
  • iText-2.1.7.js2.jar
  • jasperreports-5.2.0.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文章中找到更多信息

    10-06 05:27
    查看更多