English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массивы

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Списки (List)

Java Очереди (Queue)

Java Словари (Map)

Java Множественные наборы (Set)

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Многоверсионный jar-архив Java 9

Java 9 новые возможности

Функция многоверсионной совместимости 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

Java 9 новые возможности