java创建模块并将模块打包成jre(windows环境)

1. 打包的源码目录结构及源码内容如下:

 

 

 

 

package com.itranswarp.sample;

public class Greeting {

    public String hello(String name) {
        return "Hello, " + name + "!";
    }
}
Greeting.java
package com.itranswarp.sample;

import javax.xml.XMLConstants;

public class Main {

    public static void main(String[] args) {
        Greeting g = new Greeting();
        System.out.println(g.hello(XMLConstants.XML_NS_PREFIX));
    }

}
Main.java
// 表示该模块必须引入java.base与java.xml包
module hello.world {
    requires java.base;  // 可不写,任何模块都会自动引入java.base
    requires java.xml;
}
module-info.java

2.切换到oop-module目录,在当前目录下编译所有的.java文件,并存放到bin目录下,命令如下:

E:\oop-module>javac -d bin src/module-info.java src/com/itranswarp/sample/*.java

编译成功,原来空白的bin目录下多了class文件:

src目录下的module-info.java被编译到bin目录下的 module-info.class;

src目录下的com/itranswarp/sample/Main.java 和 Greeting.java 被编译到bin/com/itranswarp/sample目录下的Main.class 和 Greeting.class

 

 3.把bin目录下的所有class文件先打包成jar

// bin后面是空格再加点(.)表示当前目录
E:\oop-module>jar --create --file hello.jar --main-class com.itranswarp.sample.Main -C bin .

编译成功后,当前目录增加一个hello.jar文件

可以直接运行:java -jar hello.jar

 

 4.把jar包转换成模块(.jmod)

jmod create --class-path hello.jar hello.jmod

编译成功后,当前目录下得到一个hello.jmod模块文件

可以直接运行:java --module-path hello.jar --module hello.world

 

  5.打包成JRE文件,jlink裁剪程序用到的模块,并输出到jre目录

jlink --module-path hello.jmod --add-modules java.base,java.xml,hello.world --output jre/

 

 

  6. 切换到jre/bin目录运行模块,这边运行的java程序其实就是bin目录中的java.exe文件

 

 

 

posted @ 2020-12-24 17:11  啊行啊  阅读(823)  评论(1编辑  收藏  举报