定义基本模块

模块在名为 module-info.java 的文件中定义,名为模块描述符。它应该放在源代码根目录中:

 |-- module-info.java
 |-- com
     |-- example
         |-- foo
             |-- Foo.java
         |-- bar
             |-- Bar.java

这是一个简单的模块描述符:

module com.example {
    requires java.httpclient;
    exports com.example.foo;
}

模块名称应该是唯一的,建议你使用与包使用的相同的反向 DNS 命名符号来帮助确保这一点。

模块 java.base 包含 Java 的基本类,对于任何模块都是隐式可见的,不需要包含它。

requires 声明允许我们使用其他模块,在示例中导入模块 java.httpclient

模块还可以指定 exports 包含哪些包,从而使其对其他模块可见。

exports 子句中声明的包 com.example.foo 将对其他模块可见。com.example.foo 的任何子包都不会被导出,他们需要自己的 export 声明。

相反,exports 条款中未列出的 com.example.bar 将不会被其他模块看到。