Java 9 — мультирелизный JAR
В java 9 представлена новая функция, в которой формат jar был улучшен, чтобы можно было поддерживать и использовать разные версии класса или ресурсов java в соответствии с платформой. В JAR файл MANIFEST.MF имеет запись Multi-Release:true в своем основном разделе. Каталог META-INF также содержит подкаталог версий, в подкаталогах которого (начиная с 9 для Java 9) хранятся классы и файлы ресурсов для конкретных версий.
В этом примере мы будем использовать банку с несколькими выпусками, чтобы иметь две версии файла Tester.java, одну для jdk 7 и одну для jdk 9, и запускать его на разных версиях jdk.
Шаги
Шаг 1 − Создайте папку c:/test/java7/com/tutorialspoint. Создайте Test.java со следующим содержимым —
Тестер.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 со следующим содержимым —
Тестер.java
Живая демонстрацияpackage com.tutorialspoint; public class Tester { public static void main(String[] args) { System.out.println("Inside java 9"); } }
Скомпилируйте исходные коды.
C:\test > javac --release 9 java9/com/tutorialspoint/Tester.java C:\JAVA > javac --release 7 java7/com/tutorialspoint/Tester.java
Создайте банку с несколькими выпусками
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 Java 9
java