HotSpot JAVA9发布以来,新发布的特性中,Jigsaw比较受人关注。今天就用一个例子,概要的看看这个新发布的特性(例子参考Open JDK9的示例)。当然对内容了解不深,只是泛泛而谈。
创建两个目录src/com.greetings和src/org.astro,一个表示requires,另一个表示exports。
创建文件目录:
mkdir -p src/com.greetings/com/greetings
创建文件:
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());
}
}
创建编译class文件存放文件夹:
$ mkdir -p mods/org.astro mods/com.greetings
执行编译命令
$ 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文件夹,分别对应两个编译完成的结果。
此时执行命令:
$ java --module-path mods -m com.greetings/com.greetings.Main
Greetings world!
到现在为止,com.greetings依赖org.astro的发布例子就如上所示。
对编译结果可以使用jar命令打包。
创建mlib文件夹:
$ mkdir mlib
打包命令如下:
jar --create --file=mlib/com.greetings.jar --main-class=com.greetings.Main -C mods/com.greetings .
一定注意,最后还有一个“.”符号,千万不要漏了。不然会提示错误。
几个参数说明:
- --create 表示创建
- -C 表示指定读取目录
下面可以直接使用命令执行:
$ java -p mlib -m com.greetings
Greetings world!
至此,基于Jissaw特性的模块发布和引用基本功能就这样。当然还有一些更加复杂的参数和其他命令,比如jlink等等,以后学习到了,再发布上来一起讨论。
原文链接地址。
这是我博客新地址,欢迎大家一起交流 https://lxzchen.github.io
网友评论