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>