I'm writing an application using Quarkus and GraalVM to build a native image. I use scriptella for ETL and the build keeps failing for Janino driver. As far as i can tell, there is a deprecated method org.codehaus.janino.ScriptEvaluator.setExtendedType(java.lang.Class) and it fails because of it'S absence in janino V3.1.9 I have reflection-config.json set up correctly and works for other scriptella drivers such as csv. Any idea how can i do a workaround the deprecated method?

build output:

========================================================================================================================
GraalVM Native Image: Generating 'demo-1.0.0-SNAPSHOT-runner' (executable)...
========================================================================================================================
[1/7] Initializing...                                                                                    (9,8s @ 0,40GB)
 Version info: 'GraalVM 22.3.0.1-Final Java 17 Mandrel Distribution'
 Java version info: '17.0.5+8'
 C compiler: gcc (redhat, x86_64, 8.5.0)
 Garbage collector: Serial GC
 8 user-specific feature(s)
 - com.oracle.svm.thirdparty.gson.GsonFeature
 - io.quarkus.caffeine.runtime.graal.CacheConstructorsFeature
 - io.quarkus.hibernate.orm.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase for the [org.hibernate.Version, org.hibernate.annotations.common.Version, org.hibernate.dialect.Dialect] categories
 - io.quarkus.runner.Feature: Auto-generated class by Quarkus from the existing extensions
 - io.quarkus.runtime.graal.DisableLoggingFeature: Disables INFO logging during the analysis phase for the [org.jboss.threads] categories
 - io.quarkus.runtime.graal.ResourcesFeature: Register each line in META-INF/quarkus-native-resources.txt as a resource on Substrate VM
 - org.hibernate.graalvm.internal.GraalVMStaticFeature: Hibernate ORM's static reflection registrations for GraalVM
 - org.hibernate.graalvm.internal.QueryParsingSupport: Hibernate ORM's support for HQL Parser in GraalVM
10:20:02,153 INFO  [org.hib.sea.map.orm.boo.imp.HibernateSearchPreIntegrationService] HSEARCH000034: Hibernate Search version 6.1.7.Final
10:20:02,244 INFO  [org.hib.sea.map.orm.boo.imp.HibernateSearchPreIntegrationService] HSEARCH000034: Hibernate Search version 6.1.7.Final
[2/7] Performing analysis...  [*]                                                                       (14,4s @ 0,72GB)
   6.032 (73,61%) of  8.195 classes reachable
   6.524 (48,72%) of 13.390 fields reachable
  22.390 (37,96%) of 58.976 methods reachable
     496 classes,   381 fields, and 2.328 methods registered for reflection

Fatal error: com.oracle.graal.pointsto.util.AnalysisError$ParsingError: Error encountered while parsing scriptella.driver.janino.JaninoConnection.executeQuery(scriptella.spi.Resource, scriptella.spi.ParametersCallback, scriptella.spi.QueryCallback) 
Parsing context:
   at scriptella.driver.janino.JaninoConnection.executeQuery(JaninoConnection.java:68)
   at scriptella.core.QueryExecutor.execute(QueryExecutor.java:71)
   at scriptella.core.ContentExecutor.execute(ContentExecutor.java:73)
   at scriptella.core.ElementInterceptor.executeNext(ElementInterceptor.java:56)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:41)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)
   at scriptella.core.StatisticInterceptor.execute(StatisticInterceptor.java:37)

        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.AnalysisError.parsingError(AnalysisError.java:153)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:104)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureFlowsGraphCreated(MethodTypeFlow.java:83)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.getOrCreateMethodFlowsGraph(MethodTypeFlow.java:65)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.typestate.DefaultVirtualInvokeTypeFlow.onObservedUpdate(DefaultVirtualInvokeTypeFlow.java:109)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:562)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.PointsToAnalysis$1.run(PointsToAnalysis.java:488)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.executeCommand(CompletionExecutor.java:193)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.util.CompletionExecutor.lambda$executeService$0(CompletionExecutor.java:177)
        at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
        at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: org.graalvm.compiler.java.BytecodeParser$BytecodeParserError: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: org.codehaus.janino.ScriptEvaluator.setExtendedType(java.lang.Class). This error is reported at image build time because class scriptella.driver.janino.CodeCompiler is registered for linking at image build time by command line
        at parsing scriptella.driver.janino.CodeCompiler.compile(CodeCompiler.java:62)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.throwParserError(BytecodeParser.java:2518)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.throwParserError(SharedGraphBuilderPhase.java:110)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3393)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.handleBytecodeBlock(BytecodeParser.java:3345)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:3190)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:1138)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:1030)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:97)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase.run(SharedGraphBuilderPhase.java:84)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.run(Phase.java:49)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:446)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.apply(Phase.java:42)
        at jdk.internal.vm.compiler/org.graalvm.compiler.phases.Phase.apply(Phase.java:38)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.AnalysisParsedGraph.parseBytecode(AnalysisParsedGraph.java:135)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.meta.AnalysisMethod.ensureGraphParsed(AnalysisMethod.java:685)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.lookupEncodedGraph(InlineBeforeAnalysis.java:180)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.doInline(PEGraphDecoder.java:1162)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.tryInline(PEGraphDecoder.java:1145)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.trySimplifyInvoke(PEGraphDecoder.java:1003)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.handleInvoke(PEGraphDecoder.java:957)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.processNextNode(GraphDecoder.java:817)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysisGraphDecoder.processNextNode(InlineBeforeAnalysis.java:240)
        at jdk.internal.vm.compiler/org.graalvm.compiler.nodes.GraphDecoder.decode(GraphDecoder.java:548)
        at jdk.internal.vm.compiler/org.graalvm.compiler.replacements.PEGraphDecoder.decode(PEGraphDecoder.java:833)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.phases.InlineBeforeAnalysis.decodeGraph(InlineBeforeAnalysis.java:98)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:179)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:349)
        at org.graalvm.nativeimage.pointsto/com.oracle.graal.pointsto.flow.MethodTypeFlow.createFlowsGraph(MethodTypeFlow.java:93)
        ... 13 more
Caused by: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: org.codehaus.janino.ScriptEvaluator.setExtendedType(java.lang.Class). This error is reported at image build time because class scriptella.driver.janino.CodeCompiler is registered for linking at image build time by command line
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.reportUnresolvedElement(SharedGraphBuilderPhase.java:333)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.handleUnresolvedMethod(SharedGraphBuilderPhase.java:323)
        at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.handleUnresolvedInvoke(SharedGraphBuilderPhase.java:279)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.genInvokeVirtual(BytecodeParser.java:1721)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:5286)
        at jdk.internal.vm.compiler/org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3385)
        ... 38 more
------------------------------------------------------------------------------------------------------------------------
                        1,1s (4,3% of total time) in 20 GCs | Peak RSS: 2,84GB | CPU load: 4,87
========================================================================================================================
Failed generating 'demo-1.0.0-SNAPSHOT-runner' after 24,5s.
Error: Image build request failed with exit status 1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  35.694 s
[INFO] Finished at: 2023-01-13T11:20:16+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.quarkus.platform:quarkus-maven-plugin:2.14.1.Final:build (default) on project demo: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR]         [error]: Build step io.quarkus.deployment.pkg.steps.NativeImageBuildStep#build threw an exception: io.quarkus.deployment.pkg.steps.NativeImageBuildStep$ImageGenerationFailureException: Image generation failed. Exit code: 1
[ERROR]         at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.imageGenerationFailed(NativeImageBuildStep.java:421)
[ERROR]         at io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:262)
[ERROR]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[ERROR]         at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
[ERROR]         at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
[ERROR]         at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
[ERROR]         at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
[ERROR]         at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
[ERROR]         at java.base/java.lang.Thread.run(Thread.java:834)
[ERROR]         at org.jboss.threads.JBossThread.run(JBossThread.java:501)
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

I check graalVM and quarkus documentaion, i tried building args such as --initialize-at-runtime=org.codehaus.janino.ScriptEvaluator but it didn't change anything

I also added other classes for reflection - same result

[UPDATE]

I managed to fix the build using GraalVM 22.3.0 && Java 11 (which is needed for the project) and when i build the native image quarkus build --native it's successful.

The issue that I'm working on now is the reflection using scriptella, I included

quarkus.native.additional-build-args =\-H:ReflectionConfigurationFiles=reflection-config.json,\
                                       -H:ResourceConfigurationFiles=resources-config.json,\
                                       -H:JNIConfigurationFiles=jniconfig.json,\
                                       -H:IncludeResourceBundles=com.sun.org.apache.xerces.internal.impl.msg.XMLMessages

and that's the error I'm facing now

ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-0) HTTP Request to /etl/csv failed, error id: 3ddf8c2e-0c9b-44c9-8967-5c03abdfe3a1-2: com.oracle.svm.core.jdk.UnsupportedFeatureError: Runtime reflection is not supported for public scriptella.configuration.ConnectionEl()
0

There are 0 best solutions below