我有一个带有两个Maven模块A
和B
的Maven项目。 A
包含以下Java模块定义:
module A {
exports internal.util to B;
exports external.A;
}
B
包含以下Java模块定义:
module B {
requires A;
exports external.B;
}
构建项目时出现错误:
[WARNING] module-info.java:[16,106] module not found: B
模块B
存在,但是由于模块A
在B
之前编译且不依赖于它,因此编译器无法得知。因为我将编译器配置为将警告视为错误(-Werror
),所以构建失败。
看到我想继续将警告视为错误,解决此问题的最佳方法是什么?
答案 0 :(得分:1)
我通过扫描JDK 11源代码-Xlint:-module
找到了解决方法。如果有人找到我,我仍然愿意寻求更好的解决方案。
更新:一种替代方法是使用https://stackoverflow.com/a/53717183/14731演示的--module-source-path
谢谢艾伦·贝特曼(Alan Bateman)向我指出这个方向!
答案 1 :(得分:0)
从这个问题可以推断出,您的情况是模块A
和B
并存,而模块A
不依赖模块{{1 }}。
从模块系统的前景来看,由于B
合格地导出到模块A
,因此如果模块路径上没有解析模块B
则抛出警告。 / em>,同时构建B
。
在IntelliJ-IDEA上,我可以通过将模块A
的依赖项添加到模块B
来解决此问题,而无需进行任何声明更改。尽管使用Maven框架,但我无法想象这里没有周期性的依赖,也许the suggestion by khmarbaise会有所帮助。
注意 :一种解决此问题的替代方法也可以是使用命令行arg禁用此类警告:
<罢工> -Xlint:-出口
或作为Alan points out for correction
A
大声考虑,这是因为警告是合格出口的结果,但关于未找到模块的信息。
有用 :您可以在这些命令行参数with javac command.
上找到详细信息