JasperReports:未找到CONCATENATE函数 [英] JasperReports: CONCATENATE function not found

查看:190
本文介绍了JasperReports:未找到CONCATENATE函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Jaspersoft Studio 开发一些报告。

我有一个应用程序接受REST查询,并将它们转换为编译报告。


所以我有一些 JasperReports 包括:




  • groovy-all-2.0.1 .jar
  • iText-2.1.7.js2.jar

  • jasperreports-5.2.0.jar

  • ul>

    问题是,当我编译我的报告并从 Jaspersoft Studio 运行时,它工作正常。

    但是当我编译并运行它从我的web应用程序,它会引发异常:

      net.sf.jasperreports.engine.fill.JRExpressionEvalException:评估表达式时出错:
    源文本: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.e评估(JRCalculator.java:559)
    ...
    引起:net.sf.jasperreports.engine.JRRuntimeException:找不到函数CONCATENATE

    当我在报告中更改我的 CONCATENATE 调用时,它可以正常工作。



    所以这给我留下了一个解决方案,我错过了一个 JasperReports 罐子,但是哪一个?

    解决方案

    您还应该将 jasperreports-functions-5.2.0.jar 添加到您的类路径中。



    库包含 net.sf.jasperreports.functions.standard.TextFunctions 类与 CONCATENATE 函数。



    你可以找到此工件位于 http://jaspersoft.artifactoryonline.com/jaspersoft/jr-ce-releases Maven 存储库。



    我的测试代码 pom.xml

     <库> 
    < repository>
    < id> jr-ce-releases< / id>
    < url> http://jaspersoft.artifactoryonline.com/jaspersoft/jr-ce-releases< / url>
    < / repository>
    < / repositories>

    <依赖关系>
    < dependency>
    < groupId> net.sf.jasperreports< / groupId>
    < artifactId> jasperreports< / artifactId>
    < version> 5.2.0< / version>
    < /依赖关系>

    < dependency>
    < groupId> org.codehaus.groovy< / groupId>
    < artifactId> groovy-all< / artifactId>
    < version> 2.0.1< / version>
    < /依赖关系>
    < dependency>
    < groupId> net.sf.jasperreports< / groupId>
    < artifactId> jasperreports-functions< / artifactId>
    < version> 5.2.0< / version>
    < /依赖关系>
    < dependency>
    < groupId> joda-time< / groupId>
    < artifactId> joda-time< / artifactId>
    < version> 2.1< / version>
    < /依赖关系>
    < /依赖关系>

    net.sf.jasperreports.jasperreports-functions:5.2.0 工件取决于 joda-time.joda-time:2.1 工件 - 您还应该向类路径添加 joda-time-2.1.jar




    注意:



    您可以在报表表达式中的自定义函数文章中找到更多信息。


    I'm developing some reports with Jaspersoft Studio.
    I have a web app that should accept REST queries, and turn them into compiled reports.
    So I have some of the JasperReports jars included:

    • groovy-all-2.0.1.jar
    • iText-2.1.7.js2.jar
    • jasperreports-5.2.0.jar

    Problem is that when I compile my report and run from the Jaspersoft Studio, it works fine.
    But when I compile and run it from my web app, it throws the exception:

    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
    

    When I change my CONCATENATE call in the report it works fine.

    So this leaves me with a solution that I'm missing one of the JasperReports jars, but which one?

    解决方案

    You should also add jasperreports-functions-5.2.0.jar to your classpath.

    This library contains net.sf.jasperreports.functions.standard.TextFunctions class with CONCATENATE function.

    You can find this artifact at http://jaspersoft.artifactoryonline.com/jaspersoft/jr-ce-releases Maven repository.

    The snippet from my test 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>
    

    The net.sf.jasperreports.jasperreports-functions:5.2.0 artifact depends on joda-time.joda-time:2.1 artifact - you should also add to classpath the joda-time-2.1.jar


    Notes:

    You can find more information in Custom Functions in Report Expressions article

    这篇关于JasperReports:未找到CONCATENATE函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆