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

Creating custom image fails when limiting module

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P4 P4
    • tbd
    • None
    • tools
    • None
    • generic
    • generic

      This might be a strange use case, but this fails on a jlink run on JDK 23.0.1:

      $ ./jdk-23.0.1/bin/jlink -J-showversion --add-modules java.desktop --limit-modules jdk.jfr --output testme-img --verbose
      openjdk version "23.0.1" 2024-10-15
      OpenJDK Runtime Environment (build 23.0.1+11-39)
      OpenJDK 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)
      Error: Module java.datatransfer not found, required by java.desktop
      java.lang.module.FindException: Module java.datatransfer not found, required by java.desktop
      at java.base/java.lang.module.Resolver.findFail(Resolver.java:892)
      at java.base/java.lang.module.Resolver.resolve(Resolver.java:192)
      at java.base/java.lang.module.Resolver.resolve(Resolver.java:141)
      at java.base/java.lang.module.Configuration.resolve(Configuration.java:420)
      at java.base/java.lang.module.Configuration.resolve(Configuration.java:254)
      at jdk.jlink/jdk.tools.jlink.internal.Jlink$JlinkConfiguration.resolve(Jlink.java:206)
      at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.createImageProvider(JlinkTask.java:525)
      at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.createImage(JlinkTask.java:410)
      at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.run(JlinkTask.java:285)
      at jdk.jlink/jdk.tools.jlink.internal.Main.run(Main.java:56)
      at jdk.jlink/jdk.tools.jlink.internal.Main.main(Main.java:34)

      Removing the module limit works:
      $ rm -rf testme-img && ./jdk-23.0.1/bin/jlink -J-showversion --add-modules java.desktop --output testme-img --verbose
      openjdk version "23.0.1" 2024-10-15
      OpenJDK Runtime Environment (build 23.0.1+11-39)
      OpenJDK 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)
      java.base file:///disk/openjdk/builds/oracle-ea/jdk-23.0.1/jmods/java.base.jmod
      java.datatransfer file:///disk/openjdk/builds/oracle-ea/jdk-23.0.1/jmods/java.datatransfer.jmod
      java.desktop file:///disk/openjdk/builds/oracle-ea/jdk-23.0.1/jmods/java.desktop.jmod
      java.prefs file:///disk/openjdk/builds/oracle-ea/jdk-23.0.1/jmods/java.prefs.jmod
      java.xml file:///disk/openjdk/builds/oracle-ea/jdk-23.0.1/jmods/java.xml.jmod

      Providers:
        java.desktop provides java.net.ContentHandlerFactory used by java.base
        java.base provides java.nio.file.spi.FileSystemProvider used by java.base
        java.desktop provides javax.print.PrintServiceLookup used by java.desktop
        java.desktop provides javax.print.StreamPrintServiceFactory used by java.desktop
        java.desktop provides javax.sound.midi.spi.MidiDeviceProvider used by java.desktop
        java.desktop provides javax.sound.midi.spi.MidiFileReader used by java.desktop
        java.desktop provides javax.sound.midi.spi.MidiFileWriter used by java.desktop
        java.desktop provides javax.sound.midi.spi.SoundbankReader used by java.desktop
        java.desktop provides javax.sound.sampled.spi.AudioFileReader used by java.desktop
        java.desktop provides javax.sound.sampled.spi.AudioFileWriter used by java.desktop
        java.desktop provides javax.sound.sampled.spi.FormatConversionProvider used by java.desktop
        java.desktop provides javax.sound.sampled.spi.MixerProvider used by java.desktop
        java.desktop provides sun.datatransfer.DesktopDatatransferService used by java.datatransfer

      This should probably be handled a bit nicer.

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

              Created:
              Updated: