Jump to content
We've recently updated our Privacy Statement, available here ×

BUILD FAILED: java.lang.StringIndexOutOfBoundsException: begin 0, end 3, length 2


ingpibe

Recommended Posts

Hello everyone,

I require to use the following environment:

  • Openjdk-11 (openjdk-11+28_windows-x64_bin.zip)
  • PostgreSQL v12.10 (postgresql-12.10-1-windows-x64-binaries.zip)
  • JasperReports Server CE v8.0.0 (TIB_js-jrs-cp_8.0.0_bin.zip)

When running the steps to install those binary components, the postgresql runs correctly. However, the jasper-reports do not.

The error log extract is:

     ...
     [java] First resource path: C:jasperreports-server-cp-8.0.0-binbuildomaticconf_sourceieCe
     [java] Loading configuration resources
     [java] Initialization complete
     [java] Processing started
     [java] Updated tenant organizations
     [java] Role ROLE_ADMINISTRATOR already exists, skipping.
     [java] Role ROLE_USER already exists, skipping.
     [java] Role ROLE_ANONYMOUS already exists, skipping.
     [java] Exception in thread "main" java.lang.ExceptionInInitializerError
     [java]     at org.apache.commons.lang.builder.ToStringStyle$MultiLineToStringStyle.<init>(ToStringStyle.java:2276)
     [java]     at org.apache.commons.lang.builder.ToStringStyle.<clinit>(ToStringStyle.java:94)
     [java]     at org.apache.commons.lang.builder.ToStringBuilder.<clinit>(ToStringBuilder.java:98)
     [java]     at com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoUser.toString(RepoUser.java:359)
     [java]     at java.base/java.lang.String.valueOf(String.java:2951)
     [java]     at java.base/java.lang.StringBuilder.append(StringBuilder.java:168)
     [java]     at com.jaspersoft.jasperserver.api.metadata.user.service.impl.UserAuthorityServiceImpl.updateUser(UserAuthorityServiceImpl.java:1716)
     [java]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
     [java]     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
     [java]     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
     [java]     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
     [java]     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
     [java]     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
     [java]     at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367)
     [java]     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)
     [java]     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
     [java]     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
     [java]     at com.sun.proxy.$Proxy76.updateUser(Unknown Source)
     [java]     at com.jaspersoft.jasperserver.export.modules.auth.AuthorityImporter.updateUser(AuthorityImporter.java:190)
     [java]     at com.jaspersoft.jasperserver.export.modules.auth.AuthorityImporter.processUser(AuthorityImporter.java:159)
     [java]     at com.jaspersoft.jasperserver.export.modules.auth.AuthorityImporter.importUsers(AuthorityImporter.java:142)
     [java]     at com.jaspersoft.jasperserver.export.modules.auth.AuthorityImporter.process(AuthorityImporter.java:92)
     [java]     at com.jaspersoft.jasperserver.export.ImporterImpl.process(ImporterImpl.java:228)
     [java]     at com.jaspersoft.jasperserver.export.ImporterImpl.performImport(ImporterImpl.java:140)
     [java]     at com.jaspersoft.jasperserver.export.ImportCommandImpl.process(ImportCommandImpl.java:84)
     [java]     at com.jaspersoft.jasperserver.export.BaseExportImportCommand.process(BaseExportImportCommand.java:112)
     [java]     at com.jaspersoft.jasperserver.export.ImportCommand.main(ImportCommand.java:43)
     [java] Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end 3, length 2
     [java]     at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
     [java]     at java.base/java.lang.String.substring(String.java:1874)
     [java]     at org.apache.commons.lang.SystemUtils.getJavaVersionAsFloat(SystemUtils.java:1153)
     [java]     at org.apache.commons.lang.SystemUtils.<clinit>(SystemUtils.java:818)
     [java]     ... 28 more

BUILD FAILED
C:jasperreports-server-cp-8.0.0-binbuildomaticbindb-common.xml:1915: The following error occurred while executing this line:
C:jasperreports-server-cp-8.0.0-binbuildomaticbinimport-export.xml:361: The following error occurred while executing this line:
C:jasperreports-server-cp-8.0.0-binbuildomaticbinimport-export.xml:168: Java returned: 1

These combinations also generate errors:

  1. jasper-reports-server-ce v8.0.0 & openjdk-9.
  2. jasper-reports-server-ce v7.8.0 & openjdk-9.
  3. jasper-reports-server-ce v7.8.0 & openjdk-11.

However, with openjdk-8 they work fine (both jasper-reports-server-ce v8.0.0 and v7.8.0)

Any help or comments are welcome.

Thank you.
Atte. JV

Link to comment
Share on other sites

  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Goodnight everyone,

I found the solution!!

The problem is that SystemUtils make wrong assumptions about the format of "java.version". It completely depends on the vendor what this property contains and it does not have to be at all a string that can be interpreted as float value. It is more or less unfortunate that a Sun JDK matches a number format.

For example, the version for Java 8 returns 1.8.0_230. As of java version 9, 10, 11, it always returns a single digit as java version. For example for Openjdk 11, it returns only 11.

Solution: The solution is to update the "commons-lang-2.5.jar" library to "commons-lang-2.6.jar".

Reference:
https://commons.apache.org/proper/commons-lang/changes-report.html (Section 2.6)

  • Fix: SystemUtils: getJavaVersionAsFloat throws StringIndexOutOfBoundsException on Android runtime/Dalvik VM. Fixes LANG-624.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...