Java9多版本Jar( Multirelease JAR)


在java 9中,引入了一個新特性,其中jar格式得到了增強,可以根據平台維護和使用不同版本的java類或資源。 在JAR中,檔案MANIFEST.MF檔案的main部分中有一個條目Multi-Release:trueMETA-INF目錄還包含版本子目錄,其子目錄(從9開始,用於Java 9)儲存版本特定的類和資原始檔。

在這個例子中,我們將使用多版本的jar來建立兩個版本的Tester.java檔案,一個用於jdk 7,另一個用於jdk 9,並在不同的jdk版本上執行。

第1步 - 建立一個檔案夾c:/test/java7/com/yiibai。 用以下內容建立Test.java -

檔案:Tester.java 的程式碼如下 -

package com.yiibai;

public class Tester {
   public static void main(String[] args) {
      System.out.println("Inside java 7");
   }
}

第2步 - 建立一個檔案夾c:/test/java9/com/yiibai。 用以下內容建立:Test.java -

package com.yiibai;

public class Tester {
   public static void main(String[] args) {
      System.out.println("Inside java 9");
   }
}

編譯原始碼,分別執行以下命令 -

C:\test > javac --release 9 java9/com/yiibai/Tester.java

C:\JAVA > javac --release 7 java7/com/yiibai/Tester.java

建立多版本的jar,執行以下命令 -

C:\JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9.
Warning: entry META-INF/versions/9/com/yiibai/Tester.java, 
   multiple resources with same name

使用JDK 7執行,如下所示 -

C:\JAVA > java -cp test.jar com.yiibai.Tester
Inside Java 7

使用JDK 9執行,如下所示 -

C:\JAVA > java -cp test.jar com.yiibai.Tester
Inside Java 9