Java9 - 多版本 JAR

在 Java9 中,引入了一项新功能,增强了 jar 格式,可以根据平台维护和使用不同版本的 Java 类或资源。 在 JAR 中,一个 MANIFEST.MF 文件在其主要部分中有一个条目 Multi-Release: true。 META-INF 目录还包含一个版本子目录,其子目录(从 9 开始表示 Java9)存储特定于版本的类和资源文件。

在这个例子中,我们将使用一个多版本 jar 来拥有两个版本的 Tester.java 文件,一个用于 jdk 7,一个用于 jdk 9,并在不同的 jdk 版本上运行它。


步骤

步骤 1 − 创建文件夹 c:/test/java7/com/tutorialspoint。 使用以下内容创建 Test.java −

Tester.java

package com.tutorialspoint;

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

步骤 2 − 创建文件夹 c:/test/java9/com/tutorialspoint。 使用以下内容创建 Test.java −

Tester.java

package com.tutorialspoint;

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

编译源代码。

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

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

创建多版本 jar

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

使用 JDK 7 运行

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

使用 JDK 9 运行

C:\JAVA > java -cp test.jar com.tutorialspoint.Tester
Inside Java9