Java 9 Multi-Release-JAR-Dateien
Das Multi-Release-JAR-Feature ermöglicht es Ihnen, Klassenversionen zu erstellen, die nur ausgewählt werden, wenn Bibliotheksprogramme in einer bestimmten Version der Java-Umgebung ausgeführt werden.
über den Parameter--release, um die Kompilierungsversion anzugeben.
Die konkrete Änderung ist, dass der MANIFEST.MF-Datei im META-INF-Verzeichnis ein neues Attribut hinzugefügt wurde:
Multi-Release: true
Darüber hinaus wird unter dem META-INF-Verzeichnis ein versions-Verzeichnis hinzugefügt. Wenn Java 9 unterstützt werden soll, gibt es ein 9-Verzeichnis unter dem versions-Verzeichnis.
multirelease.jar
├── META-INF
│ └── versions
│ └── 9
│ └── multirelease
│ └── Helper.class
├── multirelease
├── Helper.class
└── Main.class
Im folgenden Beispiel verwenden wir das Multi-Release-JAR-Feature, um zwei Versionen des JAR-Pakets aus der Datei Tester.java zu generieren, eine für JDK 7 und die andere für JDK 9, und führen sie dann in unterschiedlichen Umgebungen aus.
Schritt 1
Erstellen Sie den Ordner c:/test/java7/com/example und erstellen Sie die Datei Test.java in diesem Ordner. Der Code lautet wie folgt:
Beispiel
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 7");
}
}
Schritt 2
Erstellen Sie den Ordner c:/test/java9/com/example und erstellen Sie die Datei Test.java in diesem Ordner. Der Code lautet wie folgt:
Beispiel
public class Tester {
public static void main(String[] args) {
System.out.println("Inside java 9");
}
}
Quellcode kompilieren:
C:\test > javac --release 9 java9/com/example/Tester.java C:\JAVA > javac --release 7 java7/com/example/Tester.java
Multi-Release-JAR-Datei erstellen
C:\JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9 . Warning: entry META-INF/versions/9/com/example/Tester.java, multiple resources with same name
Ausführen mit JDK 7:
C:\JAVA > java -cp test.jar com.example.Tester Inside Java 7
Ausführen mit JDK 9:
C:\JAVA > java -cp test.jar com.example.Tester Inside Java 9Weitere Erweiterungen
Neue Funktionen in Java 9