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

Tutoriel de base Java

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Gestion des exceptions Java

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 9 多版本兼容 jar 包

Java 9 New features

多版本兼容 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

Dans l'exemple suivant, nous utilisons la fonction de JAR compatible avec plusieurs versions pour générer deux versions de fichiers jar pour Tester.java, l'une est jdk 7L'autre est jdk 9Ensuite, nous exécutons sous différents environnements.

Première étape

Créez le dossier c:/test/java7/com/w3codebox, puis créez un fichier Test.java dans ce dossier, le code est le suivant :

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

Deuxième étape

Créez le dossier c:/test/java9/com/w3codebox, puis créez un fichier Test.java dans ce dossier, le code est le suivant :

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

Compile source code:

C:\test > javac --release 9 java9/com/w3codebox/Tester.java
C:\JAVA > javac --release 7 java7/com/w3codebox/Tester.java

Create multi-version compatible jar package

C:\JAVA > jar -c -f test.jar -C java7 . --release 9 -C java9.
Warning: entry META-INF/versions/9/com/w3codebox/Tester.java, 
   multiple resources with the same name

Using JDK 7 Execution:

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

Using JDK 9 Execution:

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

Java 9 New features