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

Tutorial Básico de Java

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Tratamento de Exceções 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

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

Java 9 New Features