首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java -列表-模块显示模块,但jlink找不到它。

java -列表-模块显示模块,但jlink找不到它。
EN

Stack Overflow用户
提问于 2020-01-29 22:03:39
回答 1查看 3.1K关注 0票数 3

我在运行JDK 13。

我正在为JDK 13构建一个完整的JRE。

由于我的应用程序有太多的嵌入式jars并且不是模块化的,所以使用jdeps太麻烦了,所以我决定只在我的定制jre中包含所有的java模块。问题是jlink无法从java本身找到模块。

这是java -version的输出

代码语言:javascript
复制
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的输出

代码语言:javascript
复制
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时,我会得到一个错误。

下面是我试图运行的命令:

代码语言:javascript
复制
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

但是,当我运行这个命令时,我会得到以下错误:

代码语言:javascript
复制
Error: Module jdk.jartool@3.0.2 not found

我尝试将模块路径更改为java bin文件夹、lib文件夹、仅为JAVA_HOME,但似乎没有什么效果,如果删除“缺失”模块,另一个模块将“丢失”。

我正在使用git运行Windows 10下的命令

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-29 22:53:04

我相信这是由于您在--add-modules中使用的版本语法。

下面给出的错误与上面看到的相同,尽管使用的是不同的Java版本。

代码语言:javascript
复制
./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,则命令完成时不会出现错误。

代码语言:javascript
复制
$ ./bin/jlink.exe --output so-question-test --module-path jmods/ --add-modules jdk.jartool

jlink的正式文件似乎没有声明版本控制是受支持的。即使是这样,我也看不出这在实践中是如何工作的,因为.jmod文件中没有文件名中的版本,即所讨论的文件是$JAVA_HOME/jmods/jdk.jartool.jmod而不是$JAVA_HOME/jmods/jdk.jartool-11.0.2.jmod

模块模块..。 要添加到运行时映像的模块的名称。jlink工具添加了这些模块及其传递依赖项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59976260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档