Jasper Reports
January 14, 2022
Jasper Reports: The method LEN() is undefined for the type...
Поймали вот такую ошибку при попытке построения отчётов через библиотеку Jasper Reports:
Caused by: net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
1. The method LEN(String) is undefined for the type MemberReport_1642148363598_325885
value = new Boolean(LEN(((java.lang.String)parameter_stats.getValue())) > 0); //$JR_EXPR_ID=65$
<->
2. The method LEN(String) is undefined for the type MemberReport_1642148363598_325885
value = new Boolean(LEN(((java.lang.String)parameter_stats.getValue())) > 0); //$JR_EXPR_ID=65$
<->
3. The method LEN(String) is undefined for the type MemberReport_1642148363598_325885
value = new Boolean(LEN(((java.lang.String)parameter_stats.getValue())) > 0); //$JR_EXPR_ID=65$
<->
3 errors
.
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:206)
at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:357)
at net.sf.jasperreports.engine.JasperCompileManager.compileToStream(JasperCompileManager.java:326)
at net.sf.jasperreports.engine.JasperCompileManager.compileToStream(JasperCompileManager.java:309)
at net.sf.jasperreports.engine.JasperCompileManager.compileReportToStream(JasperCompileManager.java:587)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)При этом через Jaspersoft Studio шаблон компилировался без ошибок.
<reportElement positionType="Float" mode="Transparent" x="0" y="18" width="555" height="22" isRemoveLineWhenBlank="true" backcolor="#FFFFFF" uuid="65afa82a-5c2f-4da0-afd7-08da341ba544">
<property name="com.jaspersoft.studio.element.name" value="FrameBlock3"/>
<property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/>
<printWhenExpression><![CDATA[new Boolean(LEN($P{stats}) > 0)]]></printWhenExpression>
</reportElement>ment>В ходе поиска аналогичных ошибок было установлено, что не хватает библиотеки Jasper для работы со вспомогательными функциями — jasperreports-functions.
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-functions</artifactId>
<version>6.18.1</version>
</dependency>Добавили последнюю на текущий день версию (14.01.2022), перезапустили, всё заработало!
И небольшой кусочек pom.xml со списком всех библиотек, которые находятся в нашем проекте (для справки).
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.6.0</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-fonts</artifactId>
<version>6.0.0</version>
</dependency>
<dependency>
<groupId>com.jaspersoft</groupId>
<artifactId>jrs-rest-java-client</artifactId>
<version>6.3.1</version>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports-functions</artifactId>
<version>6.18.1</version>
</dependency>