English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Функция многоверсионной совместимости JAR позволяет создавать библиотеки, которые работают только с определенной версией Java и позволяют выбирать используемую версию class.
Указывайте версию компиляции через параметр --release.
Конкретные изменения заключаются в том, что в директории META-INF файл MANIFEST.MF добавлен новый атрибут:
Multi-Release: true
Затем в директории META-INF добавлена директория versions, если необходимо поддерживать java9, то в директории versions есть директория 9.
multirelease.jar ├── META-INF │ └── versions │ └── 9 │ └── multirelease │ └── Helper.class ├── multirelease ├── Helper.class └── Main.class
В данном примере мы используем функцию многоверсионной совместимости JAR для создания двух версий jar-архива файла Tester.java, одной для jdk 7, другой для jdk 9, и затем запускаем их в различных средах.
Шаг 1
Создайте папку c:/test/java7/com/w3codebox и создайте файл Test.java в этой папке, код如下:
package com.w3codebox; public class Tester { public static void main(String[] args) { System.out.println("Inside java 7"); {} {}
Шаг 2
Создайте папку c:/test/java9/com/w3codebox и создайте файл Test.java в этой папке, код如下:
package com.w3codebox; public class Tester { public static void main(String[] args) { System.out.println("Inside java 9"); {} {}
Компилирование исходного кода:
C:\test > javac --release 9 java9/com/w3codebox/Tester.java C:\JAVA > javac --release 7 java7/com/w3codebox/Tester.java
Создание jar-пакета с множественными версиями
C:\JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9. Предупреждение: вхождение META-INF/versions/9/com/w3codebox/Tester.java, множественные ресурсы с одним именем
Использование JDK 7 для выполнения:
C:\JAVA > java -cp test.jar com.w3codebox.Tester Внутри Java 7
Использование JDK 9 для выполнения:
C:\JAVA > java -cp test.jar com.w3codebox.Tester Внутри Java 9