java17之编译打包

本文来源于《Java9模块化开发核心原则与实践》,主要是具体化了操作步骤

创建样例目录及文件

# 创建目录
mkdir -p src/helloworld/com/javamodularity/helloworld/
# 进入java文件所在目录
cd src/helloworld/com/javamodularity/helloworld/
# 编写java文件
vim HelloWorld.java
# 进入模块依赖配置文件所在目录
cd src/helloworld/
# 编写module-info.java文件
vim module-info.java

HelloWorld.java

package com.javamodularity.helloworld; 

public class HelloWorld { 
	public static void main(String... args) {
		System.out.println ("Hello Modular World !");
	}
}

module-info.java

module helloworld {
	
	
}

编译单模块helloworld

javac -d out/helloworld src/helloworld/com/javamodularity/helloworld/HelloWorld.java src/helloworld/module-info.java

打包单模块Hello World

# 打包到mods模块下
mkdir  mods
# 打jar包命令 注意结尾的 .
# -cf 创建一个新文件helloworld.jar
# -e  指定这个模块的人口点是 com.javamodularity.helloworld.HelloWorld类
# -C 指示 jar 工具操作模块为 out/helloworld 目录
jar -cfe mods/helloworld.jar com.javamodularity.helloworld.HelloWorld  -C out/helloworld .

运行分解的class


java --module-path out --module helloworld/com.javamodularity.helloworld.HelloWorld 
# 以下为缩写形式 --module-path == -p   --module==-m
# java -p out -m helloworld/com.javamodularity.helloworld.HelloWorld 

运行模块化jar

java --module-path mods --module helloworld

链接模块-jlink工具

jlink --module-path mods/:$JAVA_HOME/jmods --add-modules helloworld --launcher hello=helloworld --output helloworld-image

tips

  1. –module或者 -m 必须放在命令的最后
  2. –show-module-resolution 跟踪模块系统所采取的操作:
java --show-module-resolution  --limit-modules java.base --module-path mods --module helloworld

  1. jlink-链接模块使用自定义运行时映像

你可能感兴趣的:(java基础,java)