-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed as not planned
Closed as not planned
Copy link
Labels
Description
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
- Compile the
HelloWorld.java class:javac -cp groovy-2.4.21.jar HelloWorld.java - 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 - 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 - 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)Reactions are currently unavailable