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
Neste exemplo, usamos a função de compatibilidade de múltiplas versões de JAR para gerar duas versões de pacotes jar do arquivo Tester.java, uma é jdk 7Outro é jdk 9e, em seguida, executamos em diferentes ambientes.
Primeiro passo
Crie a pasta c:/test/java7/com/w3Crie um diretório codebox e crie um arquivo Test.java na pasta, o código é o seguinte:
package com.w3codebox; public class Tester { public static void main(String[] args) { System.out.println("Inside java 7"); } }
Segundo passo
Crie a pasta c:/test/java9/com/w3Crie um diretório codebox e crie um arquivo Test.java na pasta, o código é o seguinte:
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 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