Skip to content

[Native Image] Error Report - Included ASM 9.7.1 is not supporting Java 25 compiled classes #12723

@porunov

Description

@porunov

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:

"truffle:ASM_9.7.1",
"truffle:ASM_TREE_9.7.1",
"truffle:ASM_COMMONS_9.7.1",

"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.

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 more

Additional 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

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions