HotSpot JAVA9發(fā)布以來,新發(fā)布的特性中,Jigsaw比較受人關(guān)注尝偎。今天就用一個(gè)例子,概要的看看這個(gè)新發(fā)布的特性(例子參考Open JDK9的示例)鹏控。當(dāng)然對內(nèi)容了解不深致扯,只是泛泛而談。
創(chuàng)建兩個(gè)目錄src/com.greetings和src/org.astro当辐,一個(gè)表示requires抖僵,另一個(gè)表示exports。
創(chuàng)建文件目錄:
mkdir -p src/com.greetings/com/greetings
創(chuàng)建文件:
cat src/org.astro/module-info.java
module org.astro {
????? exports org.astro;
}
cat src/org.astro/org/astro/World.java
package org.astro;
public class World {
???? public static String name() {
???????? return "world";
???? }
}
cat src/com.greetings/module-info.java
module com.greetings {
????? requires org.astro;
}
cat src/com.greetings/com/greetings/Main.java
package com.greetings;
import org.astro.World;
public class Main {
???? public static void main(String[] args) {
???????? System.out.format("Greetings %s!%n", World.name());
???? }
}
創(chuàng)建編譯class文件存放文件夾:
$ mkdir -p mods/org.astro mods/com.greetings
執(zhí)行編譯命令
$ javac -d mods/org.astro src/org.astro/module-info.java src/org.astro/org/astro/World.java
javac -d表示“指定放置生成的類文件的位置”缘揪。
$ javac --module-path mods -d mods/com.greetings src/com.greetings/module-info.java src/com.greetings/com/greetings/Main.java
編譯成功耍群,查看mods文件夾,分別對應(yīng)兩個(gè)編譯完成的結(jié)果找筝。
此時(shí)執(zhí)行命令:
$ java --module-path mods -m com.greetings/com.greetings.Main
Greetings world!
到現(xiàn)在為止蹈垢,com.greetings依賴org.astro的發(fā)布例子就如上所示。
對編譯結(jié)果可以使用jar命令打包袖裕。
創(chuàng)建mlib文件夾:
$ mkdir mlib
打包命令如下:
jar --create --file=mlib/com.greetings.jar --main-class=com.greetings.Main -C mods/com.greetings .
一定注意曹抬,最后還有一個(gè)“.”符號,千萬不要漏了急鳄。不然會(huì)提示錯(cuò)誤沐祷。
幾個(gè)參數(shù)說明:
- --create 表示創(chuàng)建
- -C 表示指定讀取目錄
下面可以直接使用命令執(zhí)行:
$ java -p mlib -m com.greetings
Greetings world!
至此,基于Jissaw特性的模塊發(fā)布和引用基本功能就這樣攒岛。當(dāng)然還有一些更加復(fù)雜的參數(shù)和其他命令赖临,比如jlink等等,以后學(xué)習(xí)到了灾锯,再發(fā)布上來一起討論兢榨。
原文鏈接地址。
這是我博客新地址顺饮,歡迎大家一起交流 https://lxzchen.github.io