java - 使用 --add-reads 运行 java 无法识别模块,即使它在使用 --list-modules 运行时出现

标签 java java-module

给定模块路径上的两个模块 m1m2:

java -version
openjdk version "11.0.2" 2019-01-15

java -p M2/bin:M1/bin --list-modules
...
m1 <path>M1/bin/
m2 <path>M2/bin/

当运行模块m2,并指定--add-readsm2m1时:

java -p M2/bin:M1/bin --add-reads m2=m1 -m m2/p2.C2
WARNING: Unknown module: m1 specified to --add-reads
...

Java 看不到模块 m1,即使在使用 --list-modules 时它是清晰可见的。

如何让--add-reads识别模块?

最佳答案

module-info.java 中的 requires 不同,--add-reads 不会将模块添加到模块图中,即使the documentation for --add-reads 说:本质上,这是模块声明中 requires 子句的命令行形式。事实证明,实际的等价物是 --add-modules--add-reads 的结合:

java -p M2/bin:M1/bin --add-modules m1 --add-reads m2=m1 -m m2/p2.C2

关于java - 使用 --add-reads 运行 java 无法识别模块,即使它在使用 --list-modules 运行时出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776368/

相关文章:

java - Spring Mvc 应用程序获取 - HTTP 状态 [404] – [未找到]

java - 使用 IN 子句的嵌套 JPA 查询

java - grails 中的 log4j : how to log into file?

java - 为什么变量在匿名方法中必须是 final 而类字段不需要

java - ModuleLayer 和 ClassLoader 有什么关系?

java - 如何在 Java 9 中按类获取模块名称?

java - 我的java没有错误,但没有运行

java - Java 9 中的 requires 和 requires 传递语句有什么区别?

java - ServiceLoader.load 如何与 JPMS 中的类加载器一起工作?

java - 无法转换为类 - 它们位于加载程序 'app' 的未命名模块中