【发布时间】:2020-01-29 22:03:39
【问题描述】:
我正在运行 JDK 13。
我正在尝试为 JDK 13 构建完整的 JRE。
由于我的应用有太多的嵌入式 jar 并且不是模块化的,使用 jdeps 太麻烦了,所以我决定只在我的自定义 jre 中包含所有 java 模块。
问题是jlink 无法从 java 本身中找到模块。
这是java -version的输出:
openjdk version "13.0.2" 2020-01-14
OpenJDK Runtime Environment (build 13.0.2+8)
OpenJDK 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
这是java --list-modules的输出:
java.base@13.0.2
java.compiler@13.0.2
java.datatransfer@13.0.2
java.desktop@13.0.2
java.instrument@13.0.2
java.logging@13.0.2
java.management@13.0.2
java.management.rmi@13.0.2
java.naming@13.0.2
java.net.http@13.0.2
java.prefs@13.0.2
java.rmi@13.0.2
java.scripting@13.0.2
java.se@13.0.2
java.security.jgss@13.0.2
java.security.sasl@13.0.2
java.smartcardio@13.0.2
java.sql@13.0.2
java.sql.rowset@13.0.2
java.transaction.xa@13.0.2
java.xml@13.0.2
java.xml.crypto@13.0.2
jdk.accessibility@13.0.2
jdk.aot@13.0.2
jdk.attach@13.0.2
jdk.charsets@13.0.2
jdk.compiler@13.0.2
jdk.crypto.cryptoki@13.0.2
jdk.crypto.ec@13.0.2
jdk.crypto.mscapi@13.0.2
jdk.dynalink@13.0.2
jdk.editpad@13.0.2
jdk.hotspot.agent@13.0.2
jdk.httpserver@13.0.2
jdk.internal.ed@13.0.2
jdk.internal.jvmstat@13.0.2
jdk.internal.le@13.0.2
jdk.internal.opt@13.0.2
jdk.internal.vm.ci@13.0.2
jdk.internal.vm.compiler@13.0.2
jdk.internal.vm.compiler.management@13.0.2
jdk.jartool@13.0.2
jdk.javadoc@13.0.2
jdk.jcmd@13.0.2
jdk.jconsole@13.0.2
jdk.jdeps@13.0.2
jdk.jdi@13.0.2
jdk.jdwp.agent@13.0.2
jdk.jfr@13.0.2
jdk.jlink@13.0.2
jdk.jshell@13.0.2
jdk.jsobject@13.0.2
jdk.jstatd@13.0.2
jdk.localedata@13.0.2
jdk.management@13.0.2
jdk.management.agent@13.0.2
jdk.management.jfr@13.0.2
jdk.naming.dns@13.0.2
jdk.naming.rmi@13.0.2
jdk.net@13.0.2
jdk.pack@13.0.2
jdk.rmic@13.0.2
jdk.scripting.nashorn@13.0.2
jdk.scripting.nashorn.shell@13.0.2
jdk.sctp@13.0.2
jdk.security.auth@13.0.2
jdk.security.jgss@13.0.2
jdk.unsupported@13.0.2
jdk.unsupported.desktop@13.0.2
jdk.xml.dom@13.0.2
jdk.zipfs@13.0.2
如你们所见,jdk.jartool@13.0.2 模块就在那里。
但是当我尝试运行 jlink 包括所有模块时,我得到一个错误。
这是我要运行的命令:
jlink --output jre --module-path ${JAVA_HOME}/jmods --add-modules \
java.base@13.0.2\
,java.compiler@13.0.2\
,java.datatransfer@13.0.2\
,java.desktop@13.0.2\
,java.instrument@13.0.2\
,java.logging@13.0.2\
,java.management@13.0.2\
,java.management.rmi@13.0.2\
,java.naming@13.0.2\
,java.net.http@13.0.2\
,java.prefs@13.0.2\
,java.rmi@13.0.2\
,java.scripting@13.0.2\
,java.se@13.0.2\
,java.security.jgss@13.0.2\
,java.security.sasl@13.0.2\
,java.smartcardio@13.0.2\
,java.sql@13.0.2\
,java.sql.rowset@13.0.2\
,java.transaction.xa@13.0.2\
,java.xml@13.0.2\
,java.xml.crypto@13.0.2\
,jdk.accessibility@13.0.2\
,jdk.aot@13.0.2\
,jdk.attach@13.0.2\
,jdk.charsets@13.0.2\
,jdk.compiler@13.0.2\
,jdk.crypto.cryptoki@13.0.2\
,jdk.crypto.ec@13.0.2\
,jdk.crypto.mscapi@13.0.2\
,jdk.dynalink@13.0.2\
,jdk.editpad@13.0.2\
,jdk.hotspot.agent@13.0.2\
,jdk.httpserver@13.0.2\
,jdk.internal.ed@13.0.2\
,jdk.internal.jvmstat@13.0.2\
,jdk.internal.le@13.0.2\
,jdk.internal.opt@13.0.2\
,jdk.internal.vm.ci@13.0.2\
,jdk.internal.vm.compiler@13.0.2\
,jdk.internal.vm.compiler.management@13.0.2\
,jdk.jartool@13.0.2\
,jdk.javadoc@13.0.2\
,jdk.jcmd@13.0.2\
,jdk.jconsole@13.0.2\
,jdk.jdeps@13.0.2\
,jdk.jdi@13.0.2\
,jdk.jdwp.agent@13.0.2\
,jdk.jfr@13.0.2\
,jdk.jlink@13.0.2\
,jdk.jshell@13.0.2\
,jdk.jsobject@13.0.2\
,jdk.jstatd@13.0.2\
,jdk.localedata@13.0.2\
,jdk.management@13.0.2\
,jdk.management.agent@13.0.2\
,jdk.management.jfr@13.0.2\
,jdk.naming.dns@13.0.2\
,jdk.naming.rmi@13.0.2\
,jdk.net@13.0.2\
,jdk.pack@13.0.2\
,jdk.rmic@13.0.2\
,jdk.scripting.nashorn@13.0.2\
,jdk.scripting.nashorn.shell@13.0.2\
,jdk.sctp@13.0.2\
,jdk.security.auth@13.0.2\
,jdk.security.jgss@13.0.2\
,jdk.unsupported@13.0.2\
,jdk.unsupported.desktop@13.0.2\
,jdk.xml.dom@13.0.2\
,jdk.zipfs@13.0.2
但是当我运行这个命令时,我得到了这个错误:
Error: Module jdk.jartool@3.0.2 not found
我尝试将模块路径更改为 java bin 文件夹、lib 文件夹、仅 JAVA_HOME,但似乎没有任何效果,如果我删除“丢失”的模块,另一个将“丢失”。
我正在使用 git bash 在 Windows 10 下运行命令
【问题讨论】:
标签: java