Java 教程
多版本兼容 JAR 功能能讓你創(chuàng)建僅在特定版本的 Java 環(huán)境中運(yùn)行庫程序時選擇使用的 class 版本。
通過 --release 參數(shù)指定編譯版本。
具體的變化就是 META-INF 目錄下 MANIFEST.MF 文件新增了一個屬性:
Multi-Release: true
然后 META-INF 目錄下還新增了一個 versions 目錄,如果是要支持 java9,則在 versions 目錄下有 9 的目錄。
multirelease.jar ├── META-INF │ └── versions │ └── 9 │ └── multirelease │ └── Helper.class ├── multirelease ├── Helper.class └── Main.class
在以下實(shí)例中,我們使用多版本兼容 JAR 功能將 Tester.java 文件生成了兩個版本的 jar 包, 一個是 jdk 7,另一個是 jdk 9,然后我們再不同環(huán)境下執(zhí)行。
第一步
創(chuàng)建文件夾 c:/test/java7/com/json,并在該文件夾下創(chuàng)建 Test.java 文件,代碼如下:
package com.json; public class Tester { public static void main(String[] args) { System.out.println("Inside java 7"); } }
第二步
創(chuàng)建文件夾 c:/test/java9/com/json,并在該文件夾下創(chuàng)建 Test.java 文件,代碼如下:
package com.json; public class Tester { public static void main(String[] args) { System.out.println("Inside java 9"); } }
編譯源代碼:
C:test > javac --release 9 java9/com/json/Tester.java C:JAVA > javac --release 7 java7/com/json/Tester.java
創(chuàng)建多版本兼容 jar 包
C:JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9. Warning: entry META-INF/versions/9/com/json/Tester.java, multiple resources with same name
使用 JDK 7 執(zhí)行:
C:JAVA > java -cp test.jar com.json.Tester Inside Java 7
使用 JDK 9 執(zhí)行:
C:JAVA > java -cp test.jar com.json.Tester Inside Java 9其他擴(kuò)展