eclipsebirt

Errors with Eclipse BIRT report generation


Context

I am in the midst of upgrading Eclipse BIRT from version 4.8.0 to 4.14.0 for one of our projects that generates reports with the help of Eclipse BIRT. As our team is migrating from Java 8 to Java 17.

Error stacktrace

When using Eclipse BIRT version 4.14.0, the report generation fails with the below stacktrace:

Jan 04, 2024 5:38:43 PM uk.co.spudsoft.birt.emitters.excel.framework.Logger info
INFO: start:org.eclipse.birt.report.engine.content.impl.ReportContent@1b13dd92
Jan 04, 2024 5:38:45 PM org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor handleJS
WARNING: Fail to execute script in function __bm_FETCH(). Source:
------
"
.. JS code ..
"
-----
A BIRT exception occurred. See next exception for more information.
Encountered code generation error while compiling function "39": generated bytecode for method exceeds 64K limit.
org.eclipse.birt.data.engine.core.DataException: Fail to execute script in function __bm_FETCH(). Source:
------
"
.. JS code ..
"
-----
A BIRT exception occurred. See next exception for more information.
Encountered code generation error while compiling function "39": generated bytecode for method exceeds 64K limit.
    at org.eclipse.birt.data.engine.script.JSMethodRunner.runScript(JSMethodRunner.java:123)
    at org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor.handleJS(DtEScriptExecutor.java:88)
    at org.eclipse.birt.report.engine.script.internal.DataSetScriptExecutor.handleJS(DataSetScriptExecutor.java:227)
    at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.handleFetch(ScriptDataSetScriptExecutor.java:131)
    at org.eclipse.birt.data.engine.impl.ScriptDataSetRuntime.fetch(ScriptDataSetRuntime.java:87)
    at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor$CustomDataSet.fetch(PreparedScriptDSQuery.java:234)
    at org.eclipse.birt.data.engine.executor.cache.OdiAdapter.fetch(OdiAdapter.java:200)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.fetch(RowResultSet.java:136)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.doNext(RowResultSet.java:119)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:98)
    at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet$RowResultSetWithResultSetScope.fetch(SimpleResultSet.java:908)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.doNext(RowResultSet.java:119)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:98)
    at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.prepareFirstRow(SimpleResultSet.java:257)
    at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.getResultSetIterator(SimpleResultSet.java:275)
    at org.eclipse.birt.data.engine.executor.CandidateQuery.execute(CandidateQuery.java:116)
    at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor.executeOdiQuery(PreparedScriptDSQuery.java:202)
    at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:1074)
    at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:218)
    at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:170)
    at org.eclipse.birt.report.engine.data.dte.QueryResultSet.<init>(QueryResultSet.java:96)
    at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:150)
    at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:254)
    at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1624)
    at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:73)
    at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:60)
    at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:41)
    at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:45)
    at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:34)
    at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:62)
    at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92)
    at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:97)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:145)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:69)
    at com.visa.coreconfig.service.rpt.BirtReportGenerationService.generateReport(BirtReportGenerationService.java:97)
    at com.visa.coreconfig.service.ar.ConfigAuditReportService.createAuditReport(ConfigAuditReportService.java:173)
    at com.visa.coreconfig.ar.rest.ConfigAuditReportController.createAuditReport(ConfigAuditReportController.java:34)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:254)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:182)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.eclipse.birt.data.engine.core.DataException: A BIRT exception occurred. See next exception for more information.
Encountered code generation error while compiling function "39": generated bytecode for method exceeds 64K limit.
    at org.eclipse.birt.data.engine.core.DataException.wrap(DataException.java:120)
    at org.eclipse.birt.data.engine.api.script.BaseScriptEvalUtil.evaluateJSAsExpr(BaseScriptEvalUtil.java:806)
    at org.eclipse.birt.data.engine.script.JSMethodRunner.runScript(JSMethodRunner.java:114)
    ... 86 more
Caused by: org.eclipse.birt.core.exception.CoreException: Encountered code generation error while compiling function "39": generated bytecode for method exceeds 64K limit.
    at org.eclipse.birt.core.script.JavascriptEvalUtil.wrapRhinoException(JavascriptEvalUtil.java:263)
    at org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateRawScript(JavascriptEvalUtil.java:103)
    at org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateScript(JavascriptEvalUtil.java:128)
    at org.eclipse.birt.data.engine.api.script.BaseScriptEvalUtil.evaluateJSAsExpr(BaseScriptEvalUtil.java:804)
    ... 87 more
Caused by: org.mozilla.javascript.EvaluatorException: Encountered code generation error while compiling function "39": generated bytecode for method exceeds 64K limit.
    at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:77)
    at org.mozilla.javascript.Context.reportRuntimeError(Context.java:998)
    at org.mozilla.javascript.optimizer.Codegen.reportClassFileFormatException(Codegen.java:180)
    at org.mozilla.javascript.optimizer.Codegen.generateCode(Codegen.java:309)
    at org.mozilla.javascript.optimizer.Codegen.compileToClassFile(Codegen.java:166)
    at org.mozilla.javascript.optimizer.Codegen.compile(Codegen.java:75)
    at org.mozilla.javascript.Context.compileImpl(Context.java:2559)
    at org.mozilla.javascript.Context.compileString(Context.java:1515)
    at org.mozilla.javascript.Context.compileString(Context.java:1504)
    at org.eclipse.birt.core.script.JavascriptEvalUtil.getCompiledScript(JavascriptEvalUtil.java:140)
    at org.eclipse.birt.core.script.JavascriptEvalUtil.evaluateRawScript(JavascriptEvalUtil.java:97)
    ... 89 more

Jan 04, 2024 5:38:45 PM org.eclipse.birt.report.engine.script.internal.ScriptExecutor addException
WARNING: Data Set script method "Fetch" returned null; expected a Boolean value.
org.eclipse.birt.report.engine.api.EngineException: Data Set script method "Fetch" returned null; expected a Boolean value.
    at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.addException(ScriptExecutor.java:213)
    at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.addException(ScriptExecutor.java:205)
    at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.handleFetch(ScriptDataSetScriptExecutor.java:147)
    at org.eclipse.birt.data.engine.impl.ScriptDataSetRuntime.fetch(ScriptDataSetRuntime.java:87)
    at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor$CustomDataSet.fetch(PreparedScriptDSQuery.java:234)
    at org.eclipse.birt.data.engine.executor.cache.OdiAdapter.fetch(OdiAdapter.java:200)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.fetch(RowResultSet.java:136)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.doNext(RowResultSet.java:119)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:98)
    at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet$RowResultSetWithResultSetScope.fetch(SimpleResultSet.java:908)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.doNext(RowResultSet.java:119)
    at org.eclipse.birt.data.engine.executor.cache.RowResultSet.next(RowResultSet.java:98)
    at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.prepareFirstRow(SimpleResultSet.java:257)
    at org.eclipse.birt.data.engine.executor.transform.SimpleResultSet.getResultSetIterator(SimpleResultSet.java:275)
    at org.eclipse.birt.data.engine.executor.CandidateQuery.execute(CandidateQuery.java:116)
    at org.eclipse.birt.data.engine.impl.PreparedScriptDSQuery$ScriptDSQueryExecutor.executeOdiQuery(PreparedScriptDSQuery.java:202)
    at org.eclipse.birt.data.engine.impl.QueryExecutor.execute(QueryExecutor.java:1074)
    at org.eclipse.birt.data.engine.impl.ServiceForQueryResults.executeQuery(ServiceForQueryResults.java:218)
    at org.eclipse.birt.data.engine.impl.QueryResults.getResultIterator(QueryResults.java:170)
    at org.eclipse.birt.report.engine.data.dte.QueryResultSet.<init>(QueryResultSet.java:96)
    at org.eclipse.birt.report.engine.data.dte.DteDataEngine.doExecuteQuery(DteDataEngine.java:150)
    at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.execute(AbstractDataEngine.java:254)
    at org.eclipse.birt.report.engine.executor.ExecutionContext.executeQuery(ExecutionContext.java:1624)
    at org.eclipse.birt.report.engine.executor.QueryItemExecutor.executeQuery(QueryItemExecutor.java:73)
    at org.eclipse.birt.report.engine.executor.TableItemExecutor.execute(TableItemExecutor.java:60)
    at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplicateItemExecutor.execute(SuppressDuplicateItemExecutor.java:41)
    at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportItemExecutor.execute(WrappedReportItemExecutor.java:45)
    at org.eclipse.birt.report.engine.internal.executor.l18n.LocalizedReportItemExecutor.execute(LocalizedReportItemExecutor.java:34)
    at org.eclipse.birt.report.engine.layout.html.HTMLBlockStackingLM.layoutNodes(HTMLBlockStackingLM.java:62)
    at org.eclipse.birt.report.engine.layout.html.HTMLPageLM.layout(HTMLPageLM.java:92)
    at org.eclipse.birt.report.engine.layout.html.HTMLReportLayoutEngine.layout(HTMLReportLayoutEngine.java:97)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:145)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:69)
    at com.visa.coreconfig.service.rpt.BirtReportGenerationService.generateReport(BirtReportGenerationService.java:97)
    at com.visa.coreconfig.service.ar.ConfigAuditReportService.createAuditReport(ConfigAuditReportService.java:173)
    at com.visa.coreconfig.ar.rest.ConfigAuditReportController.createAuditReport(ConfigAuditReportController.java:34)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:254)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:182)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:917)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:829)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
    at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: org.eclipse.birt.data.engine.core.DataException: Data Set script method "Fetch" returned null; expected a Boolean value.
    at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.handleFetch(ScriptDataSetScriptExecutor.java:138)
    ... 83 more

To summarize the long stacktrace, the main errors are:

Background info

I have a Java 8 version of this project running with Eclipse BIRT version 4.8.0 & the report can be generated fine.

This project in my local is running on Java 17 with Eclipse BIRT version 4.14.0 but is facing these errors.

Here is the build.gradle for the Java 8 version of the project:

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web:2.0.8.RELEASE')
    
    compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:2.0.2.RELEASE')
    compile('org.apache.tomcat:tomcat-jdbc:8.5.37')
    compile('com.github.ulisesbocchio:jasypt-spring-boot:2.1.0')
    compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.0')
    
    compile project(':ConfigAuditReportServiceTier')
    
    compile ("org.apache.logging.log4j:log4j-core:2.17.1")  
    compile ('org.apache.logging.log4j:log4j-slf4j-impl:2.17.1')
    
    compile('com.ibm.db2:db2jcc_license_cisuz:1.0')
    compile('com.ibm.db2:db2java:1.0')
    compile('com.ibm.db2:jcc:11.5.0.0')
    
    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'
}

Here is the build.gradle for the Java 17 version of the project:

dependencies {
    implementation('org.springframework.boot:spring-boot-starter-web:3.2.0')

    implementation('org.apache.tomcat:tomcat-jdbc:9.0.78')
    implementation('com.github.ulisesbocchio:jasypt-spring-boot:3.0.5')
    implementation('org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3')
    
    implementation ("org.apache.logging.log4j:log4j-core:2.21.1")   
    implementation ('org.apache.logging.log4j:log4j-slf4j-impl:2.21.1')
    
    implementation('com.ibm.db2:db2jcc_license_cisuz:1.0')
    implementation('com.ibm.db2:db2java:1.0')
    implementation('com.ibm.db2:jcc:11.5.0.0')
    
    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'
}

We downloaded the Eclipse BIRT runtime zip (birt-runtime-4.14.0-202312020807.zip) from this download link here, extracted the jars in birt-runtime-4.14.0-202312020807/ReportEngine & added them to our project's build path

Concerns

I don't think the other libraries defined in the build.gradle are causing the errors, it's the Eclipse BIRT software.


Solution

  • The 64k limit is a limitation of the Rhino Javascript engine BIRT is using. Fixing it is outside the scope of BIRT.

    As said in a comment, you should provide a minimal reproducible example.

    We are using scripting in BIRT 4.14 heavily, and it just works.

    It is well possible that your method compiled to eg 61 kb bytecode with Java 8 and now with Java 17 the byte code is slightly bigger, eg. 64.1 kb.

    You should refactor your JS code.