-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Description
Describe the Issue
Current included ASM 9.7.1 is not supporting Java 25 compiled classes. ASM added support for Java 25 starting from the version 9.8.
Links to included shaded ASM dependency:
graal/truffle/mx.truffle/suite.py
Lines 1454 to 1456 in e439da2
| "truffle:ASM_9.7.1", | |
| "truffle:ASM_TREE_9.7.1", | |
| "truffle:ASM_COMMONS_9.7.1", |
graal/espresso/mx.espresso/suite.py
Lines 463 to 465 in ba0bea7
| "shadedDependencies" : [ | |
| "truffle:ASM_9.7.1", | |
| ], |
Due to this, users are unable to use native compilation when the project's target Java version is 25 and experimental-class-define-support is enabled.
Proposed solution: Updating ASM to version 9.8 or later.
Please confirm if you have tested with the latest available version.
- I tried with the latest version of GraalVM. Latest GraalVM Version
Share the svm_err_b_*.md File
Complete report attached as a file:
svm_err_b_20251216T135154.850_pid1528.md
GraalVM Native Image Error Report
Build Output
========================================================================================================================
GraalVM Native Image: Generating 'api' (executable)...
========================================================================================================================
For detailed information and explanations on the build output, visit:
https://github.com/oracle/graal/blob/master/docs/reference-manual/native-image/BuildOutput.md
------------------------------------------------------------------------------------------------------------------------
[1/8] Initializing... (0.0s @ 0.75GB)
Stack Trace
com.oracle.svm.core.util.VMError$HostedError: InternalFeature defined by com.oracle.svm.hosted.ClassPredefinitionFeature unexpectedly failed with a(n) java.lang.IllegalArgumentException
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:86)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.handleFeatureError(FeatureHandler.java:304)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:95)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:981)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:567)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:534)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:548)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:761)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:163)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:111)
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 69
at org.graalvm.nativeimage.builder/com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:201)
at org.graalvm.nativeimage.builder/com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:181)
at org.graalvm.nativeimage.builder/com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:167)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ClassPredefinitionFeature$PredefinedClassesRegistryImpl.add(ClassPredefinitionFeature.java:187)
at org.graalvm.nativeimage.configure/com.oracle.svm.configure.PredefinedClassesConfigurationParser.parseClass(PredefinedClassesConfigurationParser.java:126)
at org.graalvm.nativeimage.configure/com.oracle.svm.configure.PredefinedClassesConfigurationParser.parseOrigin(PredefinedClassesConfigurationParser.java:117)
at org.graalvm.nativeimage.configure/com.oracle.svm.configure.PredefinedClassesConfigurationParser.parseAndRegister(PredefinedClassesConfigurationParser.java:104)
at org.graalvm.nativeimage.configure/com.oracle.svm.configure.ConfigurationParser.parseAndRegister(ConfigurationParser.java:110)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils.doParseAndRegister(ConfigurationParserUtils.java:149)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils.lambda$parseAndRegisterConfigurations$2(ConfigurationParserUtils.java:135)
at java.base/java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:231)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils$1.tryAdvance(ConfigurationParserUtils.java:128)
at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:803)
at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:293)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:315)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
at java.base/java.util.stream.IntPipeline.reduce(IntPipeline.java:517)
at java.base/java.util.stream.IntPipeline.sum(IntPipeline.java:475)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils.parseAndRegisterConfigurations(ConfigurationParserUtils.java:137)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils.parseAndRegisterConfigurations(ConfigurationParserUtils.java:89)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ClassPredefinitionFeature.afterRegistration(ClassPredefinitionFeature.java:96)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$setupNativeImage$0(NativeImageGenerator.java:981)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:93)
... 7 more
Caused by:
com.oracle.svm.core.util.VMError$HostedError: InternalFeature defined by com.oracle.svm.hosted.ClassPredefinitionFeature unexpectedly failed with a(n) java.lang.IllegalArgumentException
at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.shouldNotReachHere(VMError.java:86)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.handleFeatureError(FeatureHandler.java:304)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:95)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:981)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:567)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:534)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:548)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:761)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:163)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:111)
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 69
at org.graalvm.nativeimage.builder/com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:201)
at org.graalvm.nativeimage.builder/com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:181)
at org.graalvm.nativeimage.builder/com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:167)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ClassPredefinitionFeature$PredefinedClassesRegistryImpl.add(ClassPredefinitionFeature.java:187)
at org.graalvm.nativeimage.configure/com.oracle.svm.configure.PredefinedClassesConfigurationParser.parseClass(PredefinedClassesConfigurationParser.java:126)
at org.graalvm.nativeimage.configure/com.oracle.svm.configure.PredefinedClassesConfigurationParser.parseOrigin(PredefinedClassesConfigurationParser.java:117)
at org.graalvm.nativeimage.configure/com.oracle.svm.configure.PredefinedClassesConfigurationParser.parseAndRegister(PredefinedClassesConfigurationParser.java:104)
at org.graalvm.nativeimage.configure/com.oracle.svm.configure.ConfigurationParser.parseAndRegister(ConfigurationParser.java:110)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils.doParseAndRegister(ConfigurationParserUtils.java:149)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils.lambda$parseAndRegisterConfigurations$2(ConfigurationParserUtils.java:135)
at java.base/java.util.stream.ReferencePipeline$4$1.accept(ReferencePipeline.java:231)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils$1.tryAdvance(ConfigurationParserUtils.java:128)
at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:803)
at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:293)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:315)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
at java.base/java.util.stream.IntPipeline.reduce(IntPipeline.java:517)
at java.base/java.util.stream.IntPipeline.sum(IntPipeline.java:475)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils.parseAndRegisterConfigurations(ConfigurationParserUtils.java:137)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.config.ConfigurationParserUtils.parseAndRegisterConfigurations(ConfigurationParserUtils.java:89)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.ClassPredefinitionFeature.afterRegistration(ClassPredefinitionFeature.java:96)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$setupNativeImage$0(NativeImageGenerator.java:981)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:93)
... 7 moreAdditional Context
Reproducing the issue requires setting target Java version to 25 in the project and enabling experimental-class-define-support during native agent run for hints collection and predefined classes registration.
Setting the Gradle project to target Java 25:
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
tasks.withType(JavaCompile).configureEach {
javaCompiler.set(javaToolchains.compilerFor { languageVersion.set(JavaLanguageVersion.of(25)) })
options.release.set(25)
options.compilerArgs += "-parameters"
}
Before running native compilation it's necessary to run Jar file with native agent with defined classes support enabled:
java -agentlib:native-image-agent=config-output-dir=/project/src/main/resources/META-INF/native-image/graalvm-agent-hints/test.project/test/,experimental-class-define-support -jar test.jar
Finally, when hints are collected and predefined classes are written, we can trigger native image compilation. Example with Gradle native-image plugin:
./gradlew nativeCompile
As of today, community docker image ghcr.io/graalvm/native-image-community:25.0.1 will fail with:
java.lang.IllegalArgumentException: Unsupported class file major version 69
at org.graalvm.nativeimage.builder/
com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:201) at org.graalvm.nativeimage.builder/
com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:181) at org.graalvm.nativeimage.builder/
com.oracle.svm.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:167) at org.graalvm.nativeimage.builder/
com.oracle.svm.hosted.ClassPredefinitionFeature$PredefinedClassesRegistryImpl.add(ClassPredefinitionFeature.java:187) at org.graalvm.nativeimage.configure/
com.oracle.svm.configure.PredefinedClassesConfigurationParser.parseClass(PredefinedClassesConfigurationParser.java:126)
The build process encountered an unexpected error:
> com.oracle.svm.core.util.VMError$HostedError: InternalFeature defined by com.oracle.svm.hosted.ClassPredefinitionFeature unexpectedly failed with a(n) java.lang.IllegalArgumentException