Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8329100

Module boot layer not initializable with -Duser.language=cs and multi-release jar on module-path

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P3 P3
    • None
    • 23
    • core-libs
    • None
    • b13
    • generic
    • generic

      Since JDK 23+13 we see the following error when trying to initialize the JVM with a multi-release jar on the module path and with the czech locale:

      $ ./jdk-23+13/bin/java -Duser.language=cs --module-path lib/io.quarkus.quarkus-fs-util-0.0.9.jar --list-modules
      Error occurred during initialization of boot layer
      java.lang.ExceptionInInitializerError
      Caused by: java.lang.RuntimeException: java.lang.IllegalAccessException: symbolic reference class is not accessible: class java.lang.Class, from public Lookup

      Turning on -Xlog:init=debug we see this:

      $ jdk-23+13/bin/java -Duser.language=cs --module-path lib/io.quarkus.quarkus-fs-util-0.0.9.jar -Xlog:init=debug --list-modules
      Error occurred during initialization of boot layer
      java.lang.ExceptionInInitializerError
      at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
      at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1161)
      at java.base/java.lang.invoke.DirectMethodHandle.checkInitialized(DirectMethodHandle.java:382)
      at java.base/java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:370)
      at java.base/java.lang.invoke.DirectMethodHandle.internalMemberNameEnsureInit(DirectMethodHandle.java:335)
      at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:168)
      at java.base/java.lang.invoke.CallSite.makeSite(CallSite.java:316)
      at java.base/java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:275)
      at java.base/java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:265)
      at java.base/java.lang.runtime.SwitchBootstraps$TypePairs.hashCode(SwitchBootstraps.java:685)
      at java.base/java.util.HashMap.hash(HashMap.java:338)
      at java.base/java.util.HashMap.put(HashMap.java:619)
      at java.base/java.lang.runtime.SwitchBootstraps$TypePairs.initialize(SwitchBootstraps.java:695)
      at java.base/java.lang.runtime.SwitchBootstraps.<clinit>(SwitchBootstraps.java:102)
      at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized0(Native Method)
      at java.base/jdk.internal.misc.Unsafe.ensureClassInitialized(Unsafe.java:1161)
      at java.base/java.lang.invoke.DirectMethodHandle.checkInitialized(DirectMethodHandle.java:382)
      at java.base/java.lang.invoke.DirectMethodHandle.ensureInitialized(DirectMethodHandle.java:370)
      at java.base/java.lang.invoke.DirectMethodHandle.internalMemberNameEnsureInit(DirectMethodHandle.java:335)
      at java.base/java.lang.invoke.BootstrapMethodInvoker.invoke(BootstrapMethodInvoker.java:147)
      at java.base/java.lang.invoke.CallSite.makeSite(CallSite.java:316)
      at java.base/java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:275)
      at java.base/java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:265)
      at java.base/java.util.Locale.createLocale(Locale.java:998)
      at java.base/java.util.Map.computeIfAbsent(Map.java:1067)
      at java.base/java.util.Locale.getInstance(Locale.java:989)
      at java.base/java.util.Locale.getInstance(Locale.java:980)
      at java.base/java.util.Locale.initDefault(Locale.java:1136)
      at java.base/java.util.Locale.<clinit>(Locale.java:2391)
      at java.base/sun.security.util.SignatureFileVerifier.<clinit>(SignatureFileVerifier.java:51)
      at java.base/java.util.jar.JarFile.getBytes(JarFile.java:801)
      at java.base/java.util.jar.JarFile.checkForSpecialAttributes(JarFile.java:1027)
      at java.base/java.util.jar.JarFile.isMultiRelease(JarFile.java:387)
      at java.base/java.util.jar.JarFile.getEntry(JarFile.java:509)
      at java.base/java.util.jar.JarFile.getJarEntry(JarFile.java:471)
      at java.base/jdk.internal.module.ModulePath.readJar(ModulePath.java:639)
      at java.base/jdk.internal.module.ModulePath.readModule(ModulePath.java:332)
      at java.base/jdk.internal.module.ModulePath.scan(ModulePath.java:238)
      at java.base/jdk.internal.module.ModulePath.scanNextEntry(ModulePath.java:191)
      at java.base/jdk.internal.module.ModulePath.findAll(ModulePath.java:167)
      at java.base/java.lang.module.ModuleFinder$2.lambda$findAll$2(ModuleFinder.java:365)
      at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:288)
      at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)
      at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:556)
      at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:546)
      at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
      at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
      at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
      at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:611)
      at java.base/java.lang.module.ModuleFinder$2.findAll(ModuleFinder.java:366)
      at java.base/java.lang.module.Resolver.findAll(Resolver.java:856)
      at java.base/java.lang.module.Resolver.bind(Resolver.java:234)
      at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:313)
      at java.base/java.lang.module.ModuleDescriptor$1.resolveAndBind(ModuleDescriptor.java:2763)
      at java.base/jdk.internal.module.Modules.newBootLayerConfiguration(Modules.java:191)
      at java.base/jdk.internal.module.ModuleBootstrap.boot2(ModuleBootstrap.java:383)
      at java.base/jdk.internal.module.ModuleBootstrap.boot(ModuleBootstrap.java:173)
      at java.base/java.lang.System.initPhase2(System.java:2236)
      Caused by: java.lang.RuntimeException: java.lang.IllegalAccessException: symbolic reference class is not accessible: class java.lang.Class, from public Lookup
      at java.base/java.lang.runtime.ObjectMethods.<clinit>(ObjectMethods.java:164)
      ... 58 more
      Caused by: java.lang.IllegalAccessException: symbolic reference class is not accessible: class java.lang.Class, from public Lookup
      at java.base/java.lang.invoke.MemberName.makeAccessException(MemberName.java:889)
      at java.base/java.lang.invoke.MethodHandles$Lookup.checkSymbolicClass(MethodHandles.java:3799)
      at java.base/java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:3759)
      at java.base/java.lang.invoke.MethodHandles$Lookup.findVirtual(MethodHandles.java:2752)
      at java.base/java.lang.runtime.ObjectMethods.<clinit>(ObjectMethods.java:90)
      ... 58 more

      Changing the user.language to English works as expected:

      $ jdk-23+13/bin/java -Duser.language=en --module-path lib/io.quarkus.quarkus-fs-util-0.0.9.jar --list-modules
      java.base@23-beta
      java.compiler@23-beta
      java.datatransfer@23-beta
      java.desktop@23-beta
      java.instrument@23-beta
      java.logging@23-beta
      java.management@23-beta
      java.management.rmi@23-beta
      java.naming@23-beta
      java.net.http@23-beta
      java.prefs@23-beta
      java.rmi@23-beta
      java.scripting@23-beta
      java.se@23-beta
      java.security.jgss@23-beta
      java.security.sasl@23-beta
      java.smartcardio@23-beta
      java.sql@23-beta
      java.sql.rowset@23-beta
      java.transaction.xa@23-beta
      java.xml@23-beta
      java.xml.crypto@23-beta
      jdk.accessibility@23-beta
      jdk.attach@23-beta
      jdk.charsets@23-beta
      jdk.compiler@23-beta
      jdk.crypto.cryptoki@23-beta
      jdk.crypto.ec@23-beta
      jdk.dynalink@23-beta
      jdk.editpad@23-beta
      jdk.graal.compiler@23-beta
      jdk.graal.compiler.management@23-beta
      jdk.hotspot.agent@23-beta
      jdk.httpserver@23-beta
      jdk.incubator.vector@23-beta
      jdk.internal.ed@23-beta
      jdk.internal.jvmstat@23-beta
      jdk.internal.le@23-beta
      jdk.internal.opt@23-beta
      jdk.internal.vm.ci@23-beta
      jdk.jartool@23-beta
      jdk.javadoc@23-beta
      jdk.jcmd@23-beta
      jdk.jconsole@23-beta
      jdk.jdeps@23-beta
      jdk.jdi@23-beta
      jdk.jdwp.agent@23-beta
      jdk.jfr@23-beta
      jdk.jlink@23-beta
      jdk.jpackage@23-beta
      jdk.jshell@23-beta
      jdk.jsobject@23-beta
      jdk.jstatd@23-beta
      jdk.localedata@23-beta
      jdk.management@23-beta
      jdk.management.agent@23-beta
      jdk.management.jfr@23-beta
      jdk.naming.dns@23-beta
      jdk.naming.rmi@23-beta
      jdk.net@23-beta
      jdk.nio.mapmode@23-beta
      jdk.random@23-beta
      jdk.sctp@23-beta
      jdk.security.auth@23-beta
      jdk.security.jgss@23-beta
      jdk.unsupported@23-beta
      jdk.unsupported.desktop@23-beta
      jdk.xml.dom@23-beta
      jdk.zipfs@23-beta
      io.quarkus.quarkus.fs.util@0.0.9 file:///path/to/lib/io.quarkus.quarkus-fs-util-0.0.9.jar automatic

      This last worked with JDK 23+12. Reverting JDK-8309622, new in JDK 23+13 seems to fix the issue. Example jar triggering the issue, io.quarkus.quarkus-fs-util-0.0.9.jar, is attached.

            Unassigned Unassigned
            sgehwolf Severin Gehwolf
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: