Java 9 - Multirelease JAR

In Java 9 wird eine neue Funktion eingeführt, bei der ein JAR-Format erweitert wurde, damit verschiedene Versionen der Java-Klasse oder -Ressourcen gemäß der Plattform verwaltet und verwendet werden können. In JAR hat eine Datei MANIFEST.MF im Hauptabschnitt den Eintrag Multi-Release: true. Das META-INF-Verzeichnis enthält auch ein Unterverzeichnis für Versionen, in dessen Unterverzeichnissen (beginnend mit 9 für Java 9) versionenspezifische Klassen und Ressourcendateien gespeichert sind.

In diesem Beispiel verwenden wir ein Multi-Release-JAR, um zwei Versionen der Datei Tester.java zu haben, eine für JDK 7 und eine für JDK 9, und führen Sie sie auf verschiedenen JDK-Versionen aus.

Schritte

Step 1- Erstellen Sie einen Ordner c: / test / java7 / com / tutorialspoint. Erstellen Sie Test.java mit folgendem Inhalt:

Tester.java

package com.tutorialspoint;

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

Step 2- Erstellen Sie einen Ordner c: / test / java9 / com / tutorialspoint. Erstellen Sie Test.java mit folgendem Inhalt:

Tester.java

package com.tutorialspoint;

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

Kompilieren Sie die Quellcodes.

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

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

Erstellen Sie das Multi-Release-Glas

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

Führen Sie mit JDK 7 aus

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

Führen Sie mit JDK 9 aus

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