1.官方Feature
2.使用說明
當一個新版本的Java出現(xiàn)的時候曙博,你的庫用戶要花費數(shù)年時間才會切換到這個新的版本猜扮。這就意味著庫得去向后兼容你想要支持的最老的Java版本(許多情況下就是Java 6 或者 Java7)昌犹。這實際上意味著未來的很長一段時間,你都不能在庫中運用Java 9所提供的新特性屉佳。幸運的是谷朝,多版本兼容jar功能能讓你創(chuàng)建僅在特定版本的Java環(huán)境中運行庫程序選擇使用的class版本。
舉例1:
jar root
? - A.class
? - B.class
? - C.class
? - D.class
? - META-INF
???? - versions
??????? - 9
?????????? - A.class
?????????? - B.class
說明:
在上述場景中忘古,root.jar 可以在 Java 9 中使用,不過A或B類使用的不是頂層的root.A或root.B 這兩個class,而是處在“META-INF/versions/9”下面的這兩個。這是特別為 Java9 準備的 class 版本诅诱,可以運用 Java 9 所提供的特性和庫髓堪。同時,在早期的 Java 諸版本中使用這個JAR 也是能運行的娘荡,因為較老版本的 Java只會看到頂層的A類或 B 類干旁。
舉例2:
jar root
? - A.class
? - B.class
? - C.class
? - D.class
? - META-INF
???? - versions
??????? - 9
????????? ?-? A.class
?????????? - B.class
??????? - 10
????????? ?-
? A.class
官方說明:
By this scheme, it is possiblefor versions of a class designed for a later Java platform release to overridethe version of that same class designed for an earlier Java platform release.
3.使用舉例
步驟一:提供必要的類
在指定目錄(E:\teach\01_Java9\multijar\src\main\java\com\atguigu)下提供如下的類:
【Generator.java】
【Application.java】
在如下目錄(E:\teach\01_Java9\multijar\src\main\java-9\com\atguigu)下提供同名的類:
【Generator.java】
步驟二:打包
指令如下:
javac -d build --release 8? src/main/java/com/atguigu/*.java
javac -d build9 --release 9? src/main/java-9/com/atguigu/*.java
jar --create --main-class=Application --file? multijar.jar -C build . --release 9 -C build9 .
步驟三:在java 9 及之前版本的環(huán)境下進行測試即可