Discuss / Java / jlink命令报错:Error: Module java.xml not found和解决方案

jlink命令报错:Error: Module java.xml not found和解决方案

Topic source

412445773

#1 Created at ... [Delete] [Delete and Lock User]

首先, 列出我的Docker环境

# java --version
openjdk 19.0.1 2022-10-18
OpenJDK Runtime Environment (build 19.0.1+11)
OpenJDK 64-Bit Server VM (build 19.0.1+11, mixed mode)

其次, 问题复现

# jlink --module-path hello.jmod --add-modules java.base,java.xml,hello.world --output jre/
Error: Module java.xml not found
java.lang.module.FindException: Module java.xml not found
    at java.base/java.lang.module.Resolver.findFail(Resolver.java:892)
    at java.base/java.lang.module.Resolver.resolve(Resolver.java:129)
    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:217)
    at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.createImageProvider(JlinkTask.java:536)
    at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.createImage(JlinkTask.java:424)
    at jdk.jlink/jdk.tools.jlink.internal.JlinkTask.run(JlinkTask.java:276)
    at jdk.jlink/jdk.tools.jlink.internal.Main.run(Main.java:56)
    at jdk.jlink/jdk.tools.jlink.internal.Main.main(Main.java:34)

最后, 解决方案

猜测为JDK版本问题, 使用镜像eclipse-temurin而非openjdk

# java --version

openjdk 19.0.1 2022-10-18

OpenJDK Runtime Environment Temurin-19.0.1+10 (build 19.0.1+10)

OpenJDK 64-Bit Server VM Temurin-19.0.1+10 (build 19.0.1+10, mixed mode, sharing)

# jlink --module-path hello.jmod --add-modules java.base,java.xml,hello.world --output jre/
# jre/bin/java --module hello.world
Helloxml

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

Docker镜像你要列出完整的名字,比如

openjdk:19-jdk

eclipse-temurin:19-alpine

不能光看内部有个java,好多版本会裁剪jdk,尤其是带-slim的


  • 1

Reply