Java的模块化——2、HelloWorld

示例说明

为了让大家对jigsaw有一个直观的了解,本课程使用一个小的示例来对其进行说明。

这个示例很简单,它是一个普通的多模块工程(非maven工程),主工程名为jigsaw-hello,其包括两个子模块:

application模块:只定义一个类,这是一个bean(Student)

persistense模块:定义一个类,用来模拟完成对Student的持久化

使用Idea创建工程

注意:除了JDK选择9以上之外,其他们都使用默认配置即可。编译系统暂时不要选择maven,这种清洁的方式让你可以直观的了解jigsaw。
用同样的方式创建两个模块,分别为application和persistense,目录结构如下图:

application模块代码如下:

包名:com.dokbok.jigsaw.application 源代码文件名:Student.java

package com.dokbok.jigsaw.application;

public class Student {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

在src的目录下添加一个module-info.java的文件:

module application {
    exports com.dokbok.jigsaw.application;
}

Persistense模块代码如下:

包名:com.dokbok.jigsaw.persistense 源代码文件名:Service.java

package com.dokbok.jigsaw.persistense;

import com.dokbok.jigsaw.application.Student;

public class Service {

    public Service(){
        Student student = new Student();
        student.setName("tdj");

        System.out.println("student save success: " + student.getName());
    }

    public static void main(String[] args) {
        new Service();
    }

}

同样,在src的目录下添加一个module-info.java的文件:

module persistense {
    requires application;
}

目录整体结构如下:

编译与运行

1、编译成class

进入idea的Terminal的窗口,在父项目(jigsaw-hello)的目录下执行编译命令:

#输入命令pwd查看当前目录是否正确
$ pwd   
/d/develop/java/bytebirth/jigsaw-hello
#执行编译,记住要按照依赖的顺序编译,先编译application,再编译persistense,是因为它依赖application
javac -d out --module-source-path "./*/src" --module application
javac -d out --module-source-path "./*/src" --module persistense

2、运行

java --module-path out -m persistense/com.dokbok.jigsaw.persistense.Service

3、打包成jar后运行

我们也可以将模块打包成jar文件后运行,注意打包jar的文件之前也是需要使用javac先编译两个模块的,也就是本步骤依赖于上面步骤1(编译成class)的。

#我们将打包后的jar文件放置在jar目录下,所以需要先创建该目录,打包完成后该文件夹下会包含两个文件:
mkdir jar
jar --create --file=jar/application-1.0.jar --module-version=1.0 -C out/application/ .
jar --create --file=jar/persistense-1.0.jar --module-version=1.0 -C out/persistense/ .
#运行模块persistense
java --module-path jar -m persistense/com.dokbok.jigsaw.persistense.Service

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注