1

I am trying to build a JRE on Windows 10 with OpenJDK 11. I ALWAYS get a error message, so maybe I'm just doing something wrong.

Here is a simple invocation of jlink:

C:\Users\en>"C:\Program Files\AdoptOpenJDK\jdk-11.0.9.11-hotspot\bin\jlink.exe" --add-modules java.se --bind-services --output X:\jdk11
Error: Duplicate entry!
java.lang.AssertionError: Duplicate entry!
        at jdk.jlink/jdk.tools.jlink.builder.DefaultImageBuilder.lambda$storeFiles$1(DefaultImageBuilder.java:176)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
        at jdk.jlink/jdk.tools.jlink.builder.DefaultImageBuilder.storeFiles(DefaultImageBuilder.java:171)
        at jdk.jlink/jdk.tools.jlink.internal.ImagePluginStack.storeFiles(ImagePluginStack.java:498)
        at jdk.jlink/jdk.tools.jlink.internal.ImageFileCreator.writeImage(ImageFileCreator.java:166)
        at jdk.jlink/jdk.tools.jlink.internal.ImageFileCreator.create(ImageFileCreator.java:100)
        at jdk.jlink/jdk.tools.jlink.internal.JlinkTask$ImageHelper.retrieve(JlinkTask.java:851)
        at jdk.jlink/jdk.tools.jlink.internal.ImagePluginStack.operate(ImagePluginStack.java:206)
        at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.createImage(JlinkTask.java:408)
        at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.run(JlinkTask.java:272)
        at jdk.jlink/jdk.tools.jlink.internal.Main.run(Main.java:54)
        at jdk.jlink/jdk.tools.jlink.internal.Main.main(Main.java:33)
Caused by: java.nio.file.FileAlreadyExistsException: X:\jdk11\conf\security
        at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:87)
        at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
        at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
        at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:509)
        at java.base/java.nio.file.Files.createDirectory(Files.java:689)
        at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:796)
        at java.base/java.nio.file.Files.createDirectories(Files.java:742)
        at jdk.jlink/jdk.tools.jlink.builder.DefaultImageBuilder.writeEntry(DefaultImageBuilder.java:440)
        at jdk.jlink/jdk.tools.jlink.builder.DefaultImageBuilder.accept(DefaultImageBuilder.java:411)
        at jdk.jlink/jdk.tools.jlink.builder.DefaultImageBuilder.lambda$storeFiles$1(DefaultImageBuilder.java:173)
        ... 19 more

I get the same result with JDK 14 on Windows. However, the same command works on Linux and produces a JRE image.

  • jlink should always be given an empty image directory. – VGR Nov 13 '20 at 01:11
  • Actually jlink complains if the directory even exists. I remove the output directory before running jlink. – Benjámin Budai Nov 13 '20 at 08:15
  • What happens if you use `java.base` instead of java.se? – VGR Nov 13 '20 at 12:14
  • Same error, but different file. I noticed that no two runs fail at the same file. – Benjámin Budai Nov 14 '20 at 23:44
  • It turned out to be some nasty network issue between my Linux host and the Windows guest. The X drive was on a network share mapped from the host. The same command worked fine when the output was directed to drive C. The strange thing is that copying files from either side of the share works (no checksum errors). – Benjámin Budai Nov 16 '20 at 16:02
  • Interesting. Feel free to post an answer to your own question and accept it. I imagine this will be useful information for others. – VGR Nov 16 '20 at 17:42

0 Answers0