-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Description
GraalVM master native image fails when built with the very latest JDK 17 code. It throws an error like this:
Error: Type mismatch:
interface java.util.concurrent.ConcurrentMap static java.util.concurrent.ConcurrentMap com.oracle.svm.core.jdk.Target_java_io_ObjectStreamClass_Caches.localDescs
class java.io.ClassCache static final java.io.ClassCache java.io.ObjectStreamClass$Caches.localDescs
com.oracle.svm.core.util.UserError$UserException: Type mismatch:
interface java.util.concurrent.ConcurrentMap static java.util.concurrent.ConcurrentMap com.oracle.svm.core.jdk.Target_java_io_ObjectStreamClass_Caches.localDescs
class java.io.ClassCache static final java.io.ClassCache java.io.ObjectStreamClass$Caches.localDescs
at com.oracle.svm.core.util.UserError.abort(UserError.java:72)
at com.oracle.svm.core.util.UserError.guarantee(UserError.java:96)
at com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.findOriginalField(AnnotationSubstitutionProcessor.java:829)
at com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.handleFieldInAliasClass(AnnotationSubstitutionProcessor.java:497)
at com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.handleAliasClass(AnnotationSubstitutionProcessor.java:401)
at com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.handleClass(AnnotationSubstitutionProcessor.java:368)
at com.oracle.svm.hosted.substitute.AnnotationSubstitutionProcessor.init(AnnotationSubstitutionProcessor.java:324)
at com.oracle.svm.hosted.NativeImageGenerator.createAnnotationSubstitutionProcessor(NativeImageGenerator.java:932)
at com.oracle.svm.hosted.NativeImageGenerator.setupNativeImage(NativeImageGenerator.java:845)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:554)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:514)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:407)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:585)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)
at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:615)
This is caused by the commit in openjdk/jdk17u-dev@7d132f5.
GraalVM has a subsitution like this:
@TargetClass(value = java.io.ObjectStreamClass.class, innerClass = "Caches")
final class Target_java_io_ObjectStreamClass_Caches {
@Alias @RecomputeFieldValue(kind = Kind.NewInstance, declClass = ConcurrentHashMap.class) static ConcurrentMap<?, ?> localDescs;
@Alias @RecomputeFieldValue(kind = Kind.NewInstance, declClass = ConcurrentHashMap.class) static ConcurrentMap<?, ?> reflectors;
@Alias @RecomputeFieldValue(kind = Kind.NewInstance, declClass = ReferenceQueue.class) private static ReferenceQueue<Class<?>> localDescsQueue;
@Alias @RecomputeFieldValue(kind = Kind.NewInstance, declClass = ReferenceQueue.class) private static ReferenceQueue<Class<?>> reflectorsQueue;
}
But the JDK 17 API has changed and the type of localDescs is now ClassCache instead of ConcurrentMap.
Reactions are currently unavailable