计算机系统应用教程网站

网站首页 > 技术文章 正文

Java 9揭秘-模块依赖(二) java99详细教学

btikc 2024-10-18 04:40:06 技术文章 7 ℃ 0 评论

Person类在com.jdojo.person模块中,它使用com.jdojo.address模块中的Address类型中的字段。 这意味着com.jdojo.person模块读取com.jdojo.address模块。 这通过com.jdojo.person模块声明中的requires语句指示:

requires com.jdojo.address;

requires语句用于指定一个模块对另一个模块的依赖。 如果模块读取另一个模块,则第一个模块在其声明中需要有一个requires语句。 requires语句的一般语法如下:

requires [transitive] [static] <module>;

这里,<module>是当前模块读取的另一个模块的名称。 transitive 和static修饰符都是可选的。 如果存在static修饰符,则<module>模块在编译时是必需的,但在运行时是可选的。 transitive 修饰符意味着读取当前模块的模块隐含地读取<module>模块,也就是创建传递依赖。

每个模块都隐式依赖java.base模块。 如果一个模块没有声明依赖java.base模块,编译器将添加一个requires语句,将java.base模块作为依赖模块。 名为com.jdojo.common的模块的以下两个模块声明是等效的:

// Declaration #1
module com.jdojo.common { // Compiler will add a read to the java.base module}
// Declaration #2
module com.jdojo.common { // Add a read to the java.base module explicitly
 requires java.base;
}

com.jdojo.person模块的声明包含一个requires语句,这意味着在编译时和运行时都需要com.jdojo.address模块。 编译com.jdojo.person模块时,必须在模块路径中包含com.jdojo.address模块。 如果使用NetBeans IDE,可以在模块路径中包含NetBeans项目或模块化JAR。 右键单击NetBeans中的com.jdojo.person项目,然后选择“属性”。具体如下所示:

最后点击“确定”按钮。

com.jdojo.person模块还导出com.jdojo.person包,因此该包中的公共类型(例如Person类)也可以被其他模块使用。

接下来,我们建立一个包含main方法的类:

// Main.javapackage com.jdojo.person;
import com.jdojo.address.Address;
public class Main {
 public static void main(String[] args) {
 Person john = new Person(1001, "John", "Jacobs");
 String fName = john.getFirstName();
 String lName = john.getLastName();
 Address addr = john.getAddress();
 System.out.printf("%s %s%n", fName, lName);
 System.out.printf("%s%n", addr.getLine1());
 System.out.printf("%s, %s %s%n", addr.getCity(),
 addr.getState(), addr.getZip());
 }
}

运行此类,得到输出:

此时,还可以使用命令提示符运行此示例。 需要将编译的分解目录或com.jdojo.person和com.jdojo.address模块的模块化JAR包含到模块路径中。 以下命令使用两个NetBeans项目下的build\classes目录中编译的类:

构建包含模块的NetBeans项目时,模块的模块化JAR存储在NetBeans项目的dist目录中。 当构建com.jdojo.person项目时,它将在E:\Java\com.jdojo.person\dist目录中创建一个com.jdojo.person.jar文件。 当在NetBeans中构建项目时,它还会重建当前项目所依赖的所有项目。 对于此示例,构建com.jdojo.person项目也将重建com.jdojo.address项目。 构建com.jdojo.person模块后,可以使用以下命令运行此示例:

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表