Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Errors trying to create native image that uses groovy version 2.4.21 #4484

Closed
hectorhuol opened this issue Apr 11, 2022 · 20 comments
Closed
Assignees

Comments

@hectorhuol
Copy link

hectorhuol commented Apr 11, 2022

Describe the issue
I am having issues using the functionality from groovy version 2.4.21. I am able to generate the reflect-config.json using the trace agent, and I am able to generate the native image with the native-image but when using the native image, I am getting the next error:

Exception in thread "main" com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.
        at com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:87)
        at com.oracle.svm.core.hub.PredefinedClassesSupport.throwNoBytecodeClasses(PredefinedClassesSupport.java:76)
        at com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:130)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:269)
        at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.define(ClassLoaderForClassArtifacts.java:43)
        at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts$1.run(ClassLoaderForClassArtifacts.java:76)
        at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts$1.run(ClassLoaderForClassArtifacts.java:74)
        at java.security.AccessController.doPrivileged(AccessController.java:87)
        at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.defineClassAndGetConstructor(ClassLoaderForClassArtifacts.java:74)
        at org.codehaus.groovy.runtime.callsite.CallSiteGenerator.compilePojoMethod(CallSiteGenerator.java:250)
        at org.codehaus.groovy.reflection.CachedMethod.createPojoMetaMethodSite(CachedMethod.java:267)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createCachedMethodSite(PojoMetaMethodSite.java:162)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createPojoMetaMethodSite(PojoMetaMethodSite.java:151)
        at groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:3408)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:131)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:165)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
        at org.codehaus.groovy.ast.builder.AstBuilder.buildFromString(AstBuilder.groovy:102)
        at org.codehaus.groovy.ast.builder.AstBuilder.buildFromString(AstBuilder.groovy)
        at HelloWorld.main(HelloWorld.java:20)

You can get the code I am using for testing from here: https://github.com/hectorhuol/test-graalvm-groovy

Steps to reproduce the issue
Please include both build steps as well as run steps

  1. Compile the HelloWorld.java class: javac -cp groovy-2.4.21.jar HelloWorld.java
  2. Run tracing agent to generate configuration: java -agentlib:native-image-agent=config-output-dir=META-INF/native-image -cp .;groovy-2.4.21.jar HelloWorld
  3. Generate the native image: native-image --no-fallback --allow-incomplete-classpath --report-unsupported-elements-at-runtime --native-image-info --verbose -cp .;groovy-2.4.21.jar HelloWorld hello-world
  4. Run the native image: hello-world.exe

Describe GraalVM and your environment:

  • GraalVM version:
openjdk version "11.0.13" 2021-10-19
OpenJDK Runtime Environment GraalVM CE 21.3.0 (build 11.0.13+7-jvmci-21.3-b05)
OpenJDK 64-Bit Server VM GraalVM CE 21.3.0 (build 11.0.13+7-jvmci-21.3-b05, mixed mode, sharing)
  • JDK major version: 11
  • OS: Windows
  • Architecture: AMD64

More details
Here is the output when generating the native image:

Apply file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/jni-config.json
Apply file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/reflect-config.json
Apply file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/resource-config.json
Apply file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/proxy-config.json
Apply file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/serialization-config.json
Apply file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/predefined-classes-config.json
Executing [
'C:\Program Files\Java\graalvm-ce-java11-21.3.0\bin\java.exe' \
-XX:+UseParallelGC \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-Dsubstratevm.IgnoreGraalVersionCheck=true \
--add-exports=java.base/com.sun.crypto.provider=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.event=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.loader=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.logger=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.module=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.org.xml.sax.helpers=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.perf=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.ref=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.reflect=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.util.xml.impl=ALL-UNNAMED \
--add-exports=java.base/jdk.internal.util.xml=ALL-UNNAMED \
--add-exports=java.base/sun.invoke.util=ALL-UNNAMED \
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.repository=ALL-UNNAMED \
--add-exports=java.base/sun.reflect.generics.tree=ALL-UNNAMED \
--add-exports=java.base/sun.security.jca=ALL-UNNAMED \
--add-exports=java.base/sun.security.provider=ALL-UNNAMED \
--add-exports=java.base/sun.security.util=ALL-UNNAMED \
--add-exports=java.base/sun.text.spi=ALL-UNNAMED \
--add-exports=java.base/sun.util.calendar=ALL-UNNAMED \
--add-exports=java.base/sun.util.locale.provider=ALL-UNNAMED \
--add-exports=java.base/sun.util.resources=ALL-UNNAMED \
--add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=ALL-UNNAMED \
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.sparc=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.events=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal.consumer=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal.handlers=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal.jfc=ALL-UNNAMED \
--add-exports=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED \
-XX:+UseJVMCINativeLibrary \
-Xss10m \
-Xms1g \
-Xmx14g \
-Duser.country=US \
-Duser.language=en \
-Djava.awt.headless=true \
-Dorg.graalvm.version=21.3.0 \
-Dorg.graalvm.config=CE \
-Dcom.oracle.graalvm.isaot=true \
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader \
-Xshare:off \
-Djdk.internal.lambda.disableEagerInitialization=true \
-Djdk.internal.lambda.eagerlyInitialize=false \
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \
'-javaagent:C:\Program Files\Java\graalvm-ce-java11-21.3.0\lib\svm\builder\svm.jar' \
-cp \
'C:\Program Files\Java\graalvm-ce-java11-21.3.0\lib\svm\builder\objectfile.jar;C:\Program Files\Java\graalvm-ce-java11-21.3.0\lib\svm\builder\pointsto.jar;C:\Program Files\Java\graalvm-ce-java11-21.3.0\lib\svm\builder\svm.jar' \
--module-path \
'C:\Program Files\Java\graalvm-ce-java11-21.3.0\lib\truffle\truffle-api.jar' \
'com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus' \
-imagecp \
'C:\Users\hedah\Documents\Workspace\Tests\test-graalvm-groovy;C:\Users\hedah\Documents\Workspace\Tests\test-graalvm-groovy\groovy-2.4.21.jar;C:\Program Files\Java\graalvm-ce-java11-21.3.0\lib\svm\library-support.jar' \
'-H:Path=C:\Users\hedah\Documents\Workspace\Tests\test-graalvm-groovy' \
-H:FallbackThreshold=0 \
-H:+AllowIncompleteClasspath \
-H:+ReportUnsupportedElementsAtRuntime \
-H:+DumpTargetInfo \
'-H:JNIConfigurationResources@file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/jni-config.json=META-INF\native-image\jni-config.json' \
'-H:ReflectionConfigurationResources@file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/reflect-config.json=META-INF\native-image\reflect-config.json' \
'-H:ResourceConfigurationResources@file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/resource-config.json=META-INF\native-image\resource-config.json' \
'-H:DynamicProxyConfigurationResources@file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/proxy-config.json=META-INF\native-image\proxy-config.json' \ '-H:SerializationConfigurationResources@file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/serialization-config.json=META-INF\native-image\serialization-config.json' \
'-H:PredefinedClassesConfigurationResources@file:///C:/Users/hedah/Documents/Workspace/Tests/test-graalvm-groovy/META-INF/native-image/predefined-classes-config.json=META-INF\native-image\predefined-classes-config.json' \
'-H:CLibraryPath=C:\Program Files\Java\graalvm-ce-java11-21.3.0\lib\svm\clibraries\windows-amd64' \
'-H:Class@explicit main-class=HelloWorld' \
'-H:Name@explicit image name=hello-world'
]
[hello-world:29684]    classlist:   1,482.46 ms,  0.96 GB
[hello-world:29684]        (cap):   1,989.62 ms,  0.96 GB
Warning: Could not resolve groovy.lang.GroovyCodeSource$getName for reflection configuration. Reason: java.lang.ClassNotFoundException: groovy.lang.GroovyCodeSource$getName.
Warning: Could not resolve java_lang_String$trim for reflection configuration. Reason: java.lang.ClassNotFoundException: java_lang_String$trim.
Warning: Could not resolve java_lang_System$currentTimeMillis for reflection configuration. Reason: java.lang.ClassNotFoundException: java_lang_System$currentTimeMillis.
Warning: Could not resolve java_util_List$add for reflection configuration. Reason: java.lang.ClassNotFoundException: java_util_List$add.
Warning: Could not resolve org.codehaus.groovy.control.CompilationUnit$addSource for reflection configuration. Reason: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationUnit$addSource.
Warning: Could not resolve org.codehaus.groovy.control.CompilationUnit$compile$0 for reflection configuration. Reason: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilationUnit$compile$0.
Warning: Could not resolve org.codehaus.groovy.control.CompilePhase$getPhaseNumber for reflection configuration. Reason: java.lang.ClassNotFoundException: org.codehaus.groovy.control.CompilePhase$getPhaseNumber.
[hello-world:29684]        setup:   3,731.03 ms,  0.96 GB
# Printing compilation-target information to: C:\Users\hedah\Documents\Workspace\Tests\test-graalvm-groovy\reports\target_info_20220411_125827.txt
[hello-world:29684]     (clinit):     237.59 ms,  2.58 GB
# Printing native-library information to: C:\Users\hedah\Documents\Workspace\Tests\test-graalvm-groovy\reports\native_library_info_20220411_125840.txt
[hello-world:29684]   (typeflow):   3,706.46 ms,  2.58 GB
[hello-world:29684]    (objects):   4,609.01 ms,  2.58 GB
[hello-world:29684]   (features):   3,969.63 ms,  2.58 GB
[hello-world:29684]     analysis:  13,143.69 ms,  2.58 GB
[hello-world:29684]     universe:   1,009.03 ms,  3.00 GB
[hello-world:29684]      (parse):     582.90 ms,  3.00 GB
[hello-world:29684]     (inline):     862.65 ms,  2.96 GB
[hello-world:29684]    (compile):   8,102.01 ms,  3.32 GB
[hello-world:29684]      compile:  10,635.07 ms,  3.32 GB
[hello-world:29684]        image:   1,327.43 ms,  3.32 GB
[hello-world:29684]        write:     504.94 ms,  3.32 GB
[hello-world:29684]      [total]:  32,041.88 ms,  3.32 GB
# Printing build artifacts to: C:\Users\hedah\Documents\Workspace\Tests\test-graalvm-groovy\hello-world.build_artifacts.txt

Here is again the error I get when running the native image:

Exception in thread "main" com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.
        at com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:87)
        at com.oracle.svm.core.hub.PredefinedClassesSupport.throwNoBytecodeClasses(PredefinedClassesSupport.java:76)
        at com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:130)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:269)
        at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.define(ClassLoaderForClassArtifacts.java:43)
        at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts$1.run(ClassLoaderForClassArtifacts.java:76)
        at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts$1.run(ClassLoaderForClassArtifacts.java:74)
        at java.security.AccessController.doPrivileged(AccessController.java:87)
        at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.defineClassAndGetConstructor(ClassLoaderForClassArtifacts.java:74)
        at org.codehaus.groovy.runtime.callsite.CallSiteGenerator.compilePojoMethod(CallSiteGenerator.java:250)
        at org.codehaus.groovy.reflection.CachedMethod.createPojoMetaMethodSite(CachedMethod.java:267)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createCachedMethodSite(PojoMetaMethodSite.java:162)
        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createPojoMetaMethodSite(PojoMetaMethodSite.java:151)
        at groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:3408)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:131)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:165)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)
        at org.codehaus.groovy.ast.builder.AstBuilder.buildFromString(AstBuilder.groovy:102)
        at org.codehaus.groovy.ast.builder.AstBuilder.buildFromString(AstBuilder.groovy)
        at HelloWorld.main(HelloWorld.java:20)
@oubidar-Abderrahim
Copy link
Member

Hi, Thank you for reporting this we will take a look into it and get back to you

@oubidar-Abderrahim oubidar-Abderrahim self-assigned this Apr 18, 2022
@mmoayyed
Copy link

mmoayyed commented Feb 4, 2023

I am seeing a similar error, this time with Groovy 4.

Running with:

java version "17.0.5" 2022-10-18 LTS
Java(TM) SE Runtime Environment GraalVM EE 22.3.0 (build 17.0.5+9-LTS-jvmci-22.3-b07)
Java HotSpot(TM) 64-Bit Server VM GraalVM EE 22.3.0 (build 17.0.5+9-LTS-jvmci-22.3-b07, mixed mode, sharing)
Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.

Produces:

Caused by: com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:89) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.throwNoBytecodeClasses(PredefinedClassesSupport.java:76) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:130) ~[na:na]
	at java.base@17.0.5/java.lang.ClassLoader.defineClass(ClassLoader.java:294) ~[cas:na]
	at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.define(ClassLoaderForClassArtifacts.java:42) ~[cas:4.0.8]
	at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.lambda$definePrivileged$0(ClassLoaderForClassArtifacts.java:91) ~[cas:4.0.8]
	at java.base@17.0.5/java.security.AccessController.executePrivileged(AccessController.java:168) ~[na:na]
	at java.base@17.0.5/java.security.AccessController.doPrivileged(AccessController.java:318) ~[na:na]
	at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.definePrivileged(ClassLoaderForClassArtifacts.java:91) ~[cas:4.0.8]
	at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.defineClassAndGetConstructor(ClassLoaderForClassArtifacts.java:78) ~[cas:4.0.8]
	at org.codehaus.groovy.runtime.callsite.CallSiteGenerator.compileStaticMethod(CallSiteGenerator.java:248) ~[na:na]
	at org.codehaus.groovy.reflection.CachedMethod.createStaticMetaMethodSite(CachedMethod.java:303) ~[cas:4.0.8]
	at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.createStaticMetaMethodSite(StaticMetaMethodSite.java:114) ~[cas:4.0.8]
	at groovy.lang.MetaClassImpl.createStaticSite(MetaClassImpl.java:3548) ~[cas:4.0.8]
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:72) ~[cas:4.0.8]
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:159) ~[cas:4.0.8]
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) ~[cas:4.0.8]
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) ~[cas:4.0.8]
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139) ~[cas:4.0.8]
	at nz.net.ultraq.thymeleaf.expressionprocessor.ExpressionProcessor.<clinit>(ExpressionProcessor.groovy:36) ~[cas:na]
	at java.base@17.0.5/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[cas:na]
	at java.base@17.0.5/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:207) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:0) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$MH/0x0000000304316400.invokeExact_MT(LambdaForm$MH) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:732) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandleImpl.guardWithCatch(MethodHandleImpl.java:950) ~[na:na]
	at java.base@17.0.5/java.lang.reflect.Method.invoke(Method.java:568) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:212) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:0) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$MH/0x00000003042b6800.invokeExact_MT(LambdaForm$MH) ~[na:na]
	at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321) ~[na:na]
	at java.base@17.0.5/java.lang.reflect.Method.invoke(Method.java:568) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:212) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:177) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretName(LambdaForm.java:964) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.LambdaForm.interpretWithArguments(LambdaForm.java:941) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:82) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:0) ~[cas:na]
	at java.base@17.0.5/java.lang.invoke.Invokers$Holder.linkToCallSite(Invokers$Holder) ~[na:na]
	at nz.net.ultraq.thymeleaf.layoutdialect.decorators.DecorateProcessor.doProcess(DecorateProcessor.groovy:115) ~[cas:na]
	at org.thymeleaf.processor.element.AbstractAttributeModelProcessor.doProcess(AbstractAttributeModelProcessor.java:77) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.processor.element.AbstractElementModelProcessor.process(AbstractElementModelProcessor.java:98) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.util.ProcessorConfigurationUtils$ElementModelProcessorWrapper.process(ProcessorConfigurationUtils.java:649) ~[na:na]
	at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1510) ~[na:na]
	at org.thymeleaf.engine.OpenElementTag.beHandled(OpenElementTag.java:205) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.engine.Model.process(Model.java:282) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.engine.Model.process(Model.java:290) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.engine.GatheringModelProcessable.process(GatheringModelProcessable.java:78) ~[na:na]
	at org.thymeleaf.engine.ProcessorTemplateHandler.handleCloseElement(ProcessorTemplateHandler.java:1640) ~[na:na]
	at org.thymeleaf.engine.CloseElementTag.beHandled(CloseElementTag.java:139) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.engine.TemplateModel.process(TemplateModel.java:136) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:661) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1103) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1077) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.spring6.view.ThymeleafView.renderFragment(ThymeleafView.java:372) ~[cas:3.1.1.RELEASE]
	at org.thymeleaf.spring6.view.ThymeleafView.render(ThymeleafView.java:192) ~[cas:3.1.1.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1414) ~[cas:6.0.4]
	at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1158) ~[cas:6.0.4]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1097) ~[cas:6.0.4]
	... 53 common frames omitted

@oubidar-Abderrahim
Copy link
Member

Hi @mmoayyed, Could you please try with GraalVM 22.3.1

If that doesn't fix it, please provide a small reproducer to this issue that we can use to further investigate.

@mmoayyed
Copy link

@oubidar-Abderrahim Thanks much for the follow-up. Trying with 22.3.1 produces the same problem.

Here is a hopefully-small reproducer:
https://github.com/mmoayyed/demo-spring-boot-native

Instructions here should help you build and run the native app:
https://github.com/mmoayyed/demo-spring-boot-native#readme

@oubidar-Abderrahim
Copy link
Member

@mmoayyed Can you try generating the Metadata configuration file using the Tracing agent with experimental-class-define-support as explained in: https://www.graalvm.org/22.1/reference-manual/native-image/ExperimentalAgentOptions/#support-for-predefined-classes

Let me know if that helps

@ctron-te
Copy link

@oubidar-Abderrahim I also have the same issue. When I try using 22.3.1 with experimental-class-define-support, the original error is gone but instead I get:

Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/groovy/runtime/callsite/PojoMetaMethodSite
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.throwUnresolvable(PredefinedClassesSupport.java:231)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.throwIfUnresolvable(PredefinedClassesSupport.java:224)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadSuperType(PredefinedClassesSupport.java:214)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass0(PredefinedClassesSupport.java:172)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClassIfNotLoaded(PredefinedClassesSupport.java:164)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:147)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:142)
	at java.base@11.0.18/java.lang.ClassLoader.defineClass(ClassLoader.java:294)
	at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.define(ClassLoaderForClassArtifacts.java:43)
	at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts$1.run(ClassLoaderForClassArtifacts.java:76)
	at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts$1.run(ClassLoaderForClassArtifacts.java:74)
	at java.base@11.0.18/java.security.AccessController.executePrivileged(AccessController.java:168)
	at java.base@11.0.18/java.security.AccessController.doPrivileged(AccessController.java:82)
	at org.codehaus.groovy.reflection.ClassLoaderForClassArtifacts.defineClassAndGetConstructor(ClassLoaderForClassArtifacts.java:74)
	at org.codehaus.groovy.runtime.callsite.CallSiteGenerator.compilePojoMethod(CallSiteGenerator.java:250)
	at org.codehaus.groovy.reflection.CachedMethod.createPojoMetaMethodSite(CachedMethod.java:267)
	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createCachedMethodSite(PojoMetaMethodSite.java:162)
	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.createPojoMetaMethodSite(PojoMetaMethodSite.java:151)
	at groovy.lang.MetaClassImpl.createPojoCallSite(MetaClassImpl.java:3408)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.createPojoSite(CallSiteArray.java:131)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:165)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:120)

Not sure if this is specific to my project or not

@oubidar-Abderrahim
Copy link
Member

@ctron-te, make sure your code is working on JIT mode first, and test as many use cases as possible during the generation of config files with the tracing agent.
When you build the native-image, please add this flag --allow-incomplete-classpath and see if that resolves the issue (you need to test also generated image if it's working properly)

@oubidar-Abderrahim
Copy link
Member

Any updates @ctron-te?

@ctron-te
Copy link

@oubidar-Abderrahim, unfortunately, this is still not working. I'm running exactly the same codepath when tracing and when executing in native mode.

@oubidar-Abderrahim
Copy link
Member

If you can share a small reproducer, we can take a look into it

@ctron-te
Copy link

That might be difficult in my case, how about the reproducer from @mmoayyed?

@mmoayyed
Copy link

I am working on it as I find the time; so far I have run into: spring-projects/spring-integration#8571

@cyw3
Copy link
Contributor

cyw3 commented Apr 13, 2023

I use reflectasm to dynamically create class bytecode, but after using native image and experimental-class-define-support, it seems that the bytecode generated every time is a little different (I don’t know where it is different), resulting in hash If it fails to match, the following exception occurs.

How can I solve it?

com.oracle.svm.core.jdk.UnsupportedFeatureError: Defining a class from new bytecodes at run time is not supported. Class com.test.TestMethodAccess with hash 3eedbbac207f437b7c73e05ab3b081def254cb6d0d51f732c2a932200a77d84a was not provided during the image build. Please see BuildConfiguration.md.
	at com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:89)
	at com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:136)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:298)
	at com.esotericsoftware.reflectasm.AccessClassLoader.defineClass(AccessClassLoader.java:179)
	at com.esotericsoftware.reflectasm.AccessClassLoader.defineAccessClass(AccessClassLoader.java:144)
	at com.esotericsoftware.reflectasm.MethodAccess.get(MethodAccess.java:311)

@mmoayyed
Copy link

Using the following:

id 'org.springframework.boot' version '3.1.0'
id 'org.graalvm.buildtools.native' version '0.9.22'

I have run into a new and yet similar issue:

Caused by: groovy.lang.MissingPropertyException: No such property: key for class: java.util.LinkedHashMap$Entry
	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:67) ~[cas:4.0.12]
	at org.codehaus.groovy.vmplugin.v8.IndyGuardsFiltersAndSignatures.unwrap(IndyGuardsFiltersAndSignatures.java:161) ~[na:na]
	at java.base@17.0.6/java.lang.reflect.Method.invoke(Method.java:568) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:212) ~[na:na]
	at java.base@17.0.6/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.MethodHandleIntrinsicImpl.execute(MethodHandleIntrinsicImpl.java:181) ~[na:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.methodhandles.Util_java_lang_invoke_MethodHandle.invokeInternal(Target_java_lang_invoke_MethodHandle.java:142) ~[na:na]
	at java.base@17.0.6/java.lang.invoke.MethodHandle.invokeBasic(MethodHandle.java:76) ~[cas:na]
	at java.base@17.0.6/java.lang.invoke.LambdaForm$NamedFunction.invokeWithArguments(LambdaForm.java:96) ~[na:na]

The problem appears to be here:
https://github.com/ultraq/thymeleaf-layout-dialect/blob/main/thymeleaf-layout-dialect/source/nz/net/ultraq/thymeleaf/layoutdialect/models/ModelBuilder.groovy#L150

if (attributes) {
			attributes.entrySet().each { entry ->
				attributes[(entry.key)] = attributes[(entry.key)].toString()
			}
}

It looks as though the native-agent is unclear where key comes from. Of course there is a key field, and there is of course a getKey() method. So far, I have completely failed to come up with some sort of metadata that would teach it about key.

Here is a hopefully-small reproducer:
https://github.com/mmoayyed/demo-spring-boot-native

Instructions here should help you build and run the native app:
https://github.com/mmoayyed/demo-spring-boot-native#readme

@anton0k
Copy link

anton0k commented Nov 16, 2023

I had the same problem with nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect 3.2.1 with id 'org.graalvm.buildtools.native' version '0.9.28'. I was fortunate to be able to skip this library which solved it.

@mmoayyed
Copy link

mmoayyed commented Dec 6, 2023

Updates:

Caused by: com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:121)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.throwNoBytecodeClasses(PredefinedClassesSupport.java:76)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:130)
	at java.base@21.0.1/java.lang.ClassLoader.defineClass(ClassLoader.java:280)
	at java.base@21.0.1/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
	at groovy.lang.GroovyClassLoader.access$400(GroovyClassLoader.java:89)
	at groovy.lang.GroovyClassLoader$ClassCollector.createClass(GroovyClassLoader.java:690)
	at groovy.lang.GroovyClassLoader$ClassCollector.onClassNode(GroovyClassLoader.java:707)
	at groovy.lang.GroovyClassLoader$ClassCollector.call(GroovyClassLoader.java:712)
	at org.codehaus.groovy.control.CompilationUnit$3.call(CompilationUnit.java:806)
	at org.codehaus.groovy.control.CompilationUnit$IPrimaryClassNodeOperation.doPhaseOperation(CompilationUnit.java:938)
	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:692)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:666)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:373)
	at groovy.lang.GroovyClassLoader.lambda$parseClass$2(GroovyClassLoader.java:316)
	at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163)
	at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:298)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:245)
  • Switched agent configuration to direct mode:
    agent {
        defaultMode = "direct"
        enabled = true
        builtinCallerFilter = false
        builtinHeuristicFilter = false
        enableExperimentalPredefinedClasses = true // per the above suggestion
        enableExperimentalUnsafeAllocationTracing = false
        trackReflectionMetadata = false
        modes {
            standard {
            }
            direct {
                options.add("config-output-dir={output_dir}")
                options.add("experimental-configuration-with-origins")
            }
        }
    }

Also turned off the debug flag.

Error: same as before,

Caused by: com.oracle.svm.core.jdk.UnsupportedFeatureError: No classes have been predefined during the image build to load from bytecodes at runtime.
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:121)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.throwNoBytecodeClasses(PredefinedClassesSupport.java:76)
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.hub.PredefinedClassesSupport.loadClass(PredefinedClassesSupport.java:130)
	at java.base@21.0.1/java.lang.ClassLoader.defineClass(ClassLoader.java:280)

@oubidar-Abderrahim
Copy link
Member

Hi @mmoayyed, I cannot find the example at https://github.com/mmoayyed/demo-spring-boot-native Can you please re-share it with the steps to reproduce? Thank you

@oubidar-Abderrahim
Copy link
Member

Any updates?

@mmoayyed
Copy link

No, sorry. I will be very busy for the next few weeks. Could we pause this for the time being please? I will get back to it at some point. Or, you're welcome to close and I can follow up later when/if I can reproduce this again.

@oubidar-Abderrahim
Copy link
Member

Thank you for your response, we've been working on improving our support on Github and resolving most of our backlog, we should be able to pick this up faster whenever you are ready to follow up on it.
I am closing his issue for now, please feel free to create a new issue and mention this one there, we will continue on it.

@oubidar-Abderrahim oubidar-Abderrahim closed this as not planned Won't fix, can't repro, duplicate, stale Feb 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants