我在运行JDK 13。
我正在为JDK 13构建一个完整的JRE。
由于我的应用程序有太多的嵌入式jars并且不是模块化的,所以使用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运行Windows 10下的命令
发布于 2020-01-29 22:53:04
我相信这是由于您在--add-modules中使用的版本语法。
下面给出的错误与上面看到的相同,尽管使用的是不同的Java版本。
./bin/jlink.exe --output so-question-test --module-path jmods/ --add-modules jdk.jartool@11.0.2
Error: Module jdk.jartool@11.0.2 not found但是,如果没有@11.0.2,则命令完成时不会出现错误。
$ ./bin/jlink.exe --output so-question-test --module-path jmods/ --add-modules jdk.jartooljlink的正式文件似乎没有声明版本控制是受支持的。即使是这样,我也看不出这在实践中是如何工作的,因为.jmod文件中没有文件名中的版本,即所讨论的文件是$JAVA_HOME/jmods/jdk.jartool.jmod而不是$JAVA_HOME/jmods/jdk.jartool-11.0.2.jmod
模块模块..。 要添加到运行时映像的模块的名称。jlink工具添加了这些模块及其传递依赖项。
https://stackoverflow.com/questions/59976260
复制相似问题