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
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