【问题标题】:java 9: In module-info.java do i have to again mention packages((as requires) that are already being imported in sourcesjava 9:在 module-info.java 中我是否必须再次提及已经在源中导入的包((根据需要)
【发布时间】:2017-06-26 07:33:21
【问题描述】:

使用 java 9 模块,如果我在我的代码中使用 java.xml...
1) 我将使用 import 语句导入 xml 包...
2) 如果我在我的模块的模块声明中没有提到这个包是必需的...
- 我的模块的编译会起作用吗.. ??
我猜......不......并且提到module-info.java需要xml包......它可能会工作。
所以..我想知道的是......这不是冗余......每个导入包都是隐含的......必需的。 (除非我需要更好地理解模块)

有没有办法在模块声明中提到所有导入的包都需要,否则在 module-info.java 中可能会是一个很长的列表?

【问题讨论】:

    标签: java java-9 java-module


    【解决方案1】:

    首先,在module-info.java 你提到模块,而不是包。例如。 java.xml 是一个包含大约 25 个包的模块。因此,如果您的模块使用来自 java.xml 模块的 10 个包,您不必在 module-info.java 中重复这 10 次,您只需编写一次 requires java.xml。所以,这个庞大的依赖列表实际上并不多。

    如果你真的想跳过所有这些声明,你可以不创建module-info.java(但我不建议这样做)。没有module-info.java 的模块称为自动模块,它隐式需要所有其他模块。

    【讨论】:

    • 这是 gr8 的解释。 gr8。 “但是java.xml默认不在模块图中,所以你必须通过”。我的理解是只有java.base默认可用。你指的是什么模块图。有什么例子吗?
    • 默认包含 java.xml 模块(用java --limit-modules java.se --list-modules 试试),所以不必担心。顺便说一句,模块和包之间的混淆是为什么我使用 italics 表示前者,而使用 code formatting 表示后者。
    • @Nicolai 你是对的。我将java.xml 与默认情况下不包含的java.xml.bind 混淆了。
    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2019-03-24
    相关资源
    最近更新 更多