2015-01-30 2 views
2

Использование отчетов Jasper 5.6.1. Добавлены некоторые текстовые функции в ранее работающее текстовое поле jrxml (просто нужно усечь, если длиннее 75 символов). Работает в iReport Studio, но не на Java.Jasper string функции метод undefined ошибка

<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 файл, включает в себя функции пакета. Исчерпывающий поиск в Интернете ничего не показал. Что бы это могло быть?

+0

Возможный дубликат функции [JasperReports: CONCATENATE не найден] (http://stackoverflow.com/questions/19450214/jasperreports-concatenate-function-not-found) –

ответ

2

У меня подобное сообщение об ошибке. Где вы можете это решить? Прекрасно работает в Jaspersoft студии 6.0.1, но бросает это при компиляции ж/Java:

Метод IF (логическое, BigDecimal, BigDecimal) не определено для типа Blank_A4_1_1423164610392_674232

Update: Я был в состоянии разрешите это, включив функции jar в мой путь к классам. Смотрите, если это сработает для вас. См. Jasperreports-functions-5.6.1.jar at http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.6.1/

0

При использовании GlassFish убедитесь, что на вашем рабочем сервере есть все библиотеки яшмы. Они должны находиться под glassfish/domains/domain1/lib/ext. Если в баночках нет (или некоторые из них, например, шрифты или какой-либо другой не требуемый lib), вы можете столкнуться с поведением, которое вы описываете.

Смежные вопросы