#1 2024-10-08 09:30:43

beccon4
Member
Registered: 2024-06-27

Exception in TeamSpace Overview

I've uploaded BIRT reports to ReportServer and made them available to a teamspace. Unfortunately they throw an exception the Details and History tabs. Preview and running the report works. The issue occurs not for all reports I've uploaded. Both reports which present the issue share a BIRT library for Datasets and some other objects and feature a single Data Source parameter.

What's wrong?

Conrad

Type Exception Report

Message javax.script.ScriptException: java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.TimeZone sun.util.calendar.CalendarDate.zoneinfo accessible: module java.base does not "opens sun.util.calendar" to unnamed module @104e2531

Beschreibung The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

java.lang.IllegalStateException: javax.script.ScriptException: java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.TimeZone sun.util.calendar.CalendarDate.zoneinfo accessible: module java.base does not "opens sun.util.calendar" to unnamed module @104e2531
    net.datenwerke.rs.reportdoc.server.ReportDocumentationServlet.getDocumentation(ReportDocumentationServlet.java:269)
    net.datenwerke.rs.reportdoc.server.ReportDocumentationServlet.doGet(ReportDocumentationServlet.java:83)
    net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
    net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112)
    com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
    com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
    com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184)
    com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89)
    com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:94)
    com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
    com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)

Root Cause

javax.script.ScriptException: java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.TimeZone sun.util.calendar.CalendarDate.zoneinfo accessible: module java.base does not "opens sun.util.calendar" to unnamed module @104e2531
    org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:334)
    org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72)
    java.scripting/javax.script.CompiledScript.eval(CompiledScript.java:93)
    net.datenwerke.rs.reportdoc.service.ReportDocumentationServiceImpl.execute(ReportDocumentationServiceImpl.java:196)
    net.datenwerke.rs.reportdoc.service.ReportDocumentationServiceImpl.executeDocumentation(ReportDocumentationServiceImpl.java:87)
    net.datenwerke.rs.reportdoc.server.ReportDocumentationServlet.getDocumentation(ReportDocumentationServlet.java:265)
    net.datenwerke.rs.reportdoc.server.ReportDocumentationServlet.doGet(ReportDocumentationServlet.java:83)
    net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
    net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112)
    com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
    com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
    com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184)
    com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89)
    com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:94)
    com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
    com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)

Root Cause

java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.TimeZone sun.util.calendar.CalendarDate.zoneinfo accessible: module java.base does not "opens sun.util.calendar" to unnamed module @104e2531
    java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
    java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
    java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
    net.datenwerke.rs.utils.jpa.EntityUtils.deepHibernateUnproxy(EntityUtils.java:93)
    net.datenwerke.rs.utils.jpa.EntityUtils.deepHibernateUnproxy(EntityUtils.java:96)
    net.datenwerke.rs.utils.jpa.EntityUtils.deepHibernateUnproxy(EntityUtils.java:96)
    net.datenwerke.rs.utils.jpa.EntityUtils.deepHibernateUnproxy(EntityUtils.java:96)
    net.datenwerke.rs.utils.jpa.EntityUtils.deepHibernateUnproxy(EntityUtils.java:96)
    net.datenwerke.rs.utils.jpa.EntityUtils.deepHibernateUnproxy(EntityUtils.java:96)
    net.datenwerke.rs.utils.jpa.EntityUtils.deepHibernateUnproxy(EntityUtils.java:67)
    org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
    net.datenwerke.rs.reportdoc.service.reports.Script1.run(Script1.groovy:320)
    org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:331)
    org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72)
    java.scripting/javax.script.CompiledScript.eval(CompiledScript.java:93)
    net.datenwerke.rs.reportdoc.service.ReportDocumentationServiceImpl.execute(ReportDocumentationServiceImpl.java:196)
    net.datenwerke.rs.reportdoc.service.ReportDocumentationServiceImpl.executeDocumentation(ReportDocumentationServiceImpl.java:87)
    net.datenwerke.rs.reportdoc.server.ReportDocumentationServlet.getDocumentation(ReportDocumentationServlet.java:265)
    net.datenwerke.rs.reportdoc.server.ReportDocumentationServlet.doGet(ReportDocumentationServlet.java:83)
    net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:529)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
    net.datenwerke.security.service.security.aop.SecurityCheckInterceptor.invoke(SecurityCheckInterceptor.java:112)
    com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
    com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
    com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184)
    com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89)
    com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:94)
    com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
    com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)

Hinweis Der komplette Stacktrace der Ursache ist in den Server logs zu finden
Apache Tomcat/9.0.85

Offline

#2 2024-10-08 12:02:50

eduardo
Administrator
Registered: 2016-11-01
Website

Re: Exception in TeamSpace Overview

Hi beccon4,

your error is:

java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.TimeZone sun.util.calendar.CalendarDate.zoneinfo accessible: module java.base does not "opens sun.util.calendar" to unnamed module @104e2531

pls add this to your tomcat configuration:

--add-opens java.base/sun.util.calendar=ALL-UNNAMED

in a similar way as the others, documented here: https://reportserver.net/de/dokumentati … -on-ubuntu

JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.net=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/jdk.internal.reflect=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.lang.invoke=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.util=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.lang.ref=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.lang.reflect=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/sun.reflect.generics.repository=ALL-UNNAMED"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS -Djavax.net.ssl.trustStoreType=JKS"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS -Dfile.encoding=UTF-8"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS -Djava.awt.headless=true"

Consider refactoring your BIRT reports so that they do not rely on the internal sun.util.calendar.CalendarDate.zoneinfo. Using internal APIs is risky since they are not guaranteed to be available across different Java versions. Instead, use standard Java date/time libraries, such as the java.time package, introduced in Java 8, which provides a much more robust API for date and time manipulation.

Use java.time.ZoneId, ZonedDateTime, or other standard APIs that are officially supported.

Regards,
Eduardo

Offline

Board footer

Powered by FluxBB