Jasper字符串函数方法未定义错误

时间:2015-01-30 19:52:07

标签: function jasper-reports

使用Jasper Reports 5.6.1。在以前工作的文本字段jrxml中添加了一些文本函数(如果长度超过75个字符,则只想截断)。适用于iReport Studio,但不适用于Java。

<textFieldExpression><![CDATA[IF(LEN($F{AccountName})<75,$F{AccountName},LEFT($F{AccountName},75)+"...")]]></textFieldExpression>

错误讯息:

Error occured while trying to fetch the HTML Output from the Jasper     Service (Errors were encountered when compiling report expressions class file:
1. The method LEN(String) is undefined for the type ICC_1422636250096_198427
            value = IF(LEN(((java.lang.String)field_AccountName.getValue()))<75,((java.lang.String)field_AccountName.getValue()),LEFT(((java.lang.String)field_AccountName.getValue()),75)+"..."); //$JR_EXPR_ID=9$
                       <->
2. The method LEFT(String, int) is undefined for the type ICC_1422636250096_198427
            value = IF(LEN(((java.lang.String)field_AccountName.getValue()))<75,((java.lang.String)field_AccountName.getValue()),LEFT(((java.lang.String)field_AccountName.getValue()),75)+"..."); //$JR_EXPR_ID=9$
                                                                                                                                 <-->
3. The method LEN(String) is undefined for the type ICC_1422636250096_198427
            value = IF(LEN(((java.lang.String)field_AccountName.getOldValue()))<75,((java.lang.String)field_AccountName.getOldValue()),LEFT(((java.lang.String)field_AccountName.getOldValue()),75)+"..."); //$JR_EXPR_ID=9$
                       <->
4. The method LEFT(String, int) is undefined for the type ICC_1422636250096_198427
            value = IF(LEN(((java.lang.String)field_AccountName.getOldValue()))<75,((java.lang.String)field_AccountName.getOldValue()),LEFT(((java.lang.String)field_AccountName.getOldValue()),75)+"..."); //$JR_EXPR_ID=9$
                                                                                                                                       <-->
5. The method LEN(String) is undefined for the type ICC_1422636250096_198427
            value = IF(LEN(((java.lang.String)field_AccountName.getValue()))<75,((java.lang.String)field_AccountName.getValue()),LEFT(((java.lang.String)field_AccountName.getValue()),75)+"..."); //$JR_EXPR_ID=9$
                       <->
6. The method LEFT(String, int) is undefined for the type ICC_1422636250096_198427
            value = IF(LEN(((java.lang.String)field_AccountName.getValue()))<75,((java.lang.String)field_AccountName.getValue()),LEFT(((java.lang.String)field_AccountName.getValue()),75)+"..."); //$JR_EXPR_ID=9$
                                                                                                                                 <-->
6 errors
)

我在jasperreports-5.6.1.jar文件中检查了包,包含了函数包。穷举网络搜索没有任何结果。它可能是什么?

2 个答案:

答案 0 :(得分:3)

我有类似的错误消息。你能在哪里解决这个问题?在Jaspersoft Studio 6.0.1中可以正常工作,但在编译w / Java时会抛出这个:

方法IF(boolean,BigDecimal,BigDecimal)未定义类型Blank_A4_1_1423164610392_674232

更新:我能够通过在类路径中包含jar函数来解决这个问题。看看,如果这对你有用。请参阅http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.6.1/

上的jasperreports-functions-5.6.1.jar

答案 1 :(得分:0)

使用GlassFish时,请验证生产服务器上是否包含所有jasper库。它们应该在glassfish / domains / domain1 / lib / ext下。如果罐子不存在(或者其中一些,例如字体或其他非必需的lib),您可能会遇到您所描述的行为。