美文网首页
java9新特性-6-多版本兼容jar包

java9新特性-6-多版本兼容jar包

作者: 程序员驴子酱 | 来源:发表于2018-01-04 22:09 被阅读0次

1.官方Feature

238: Multi-Release JAR Files



2.使用说明

当一个新版本的Java出现的时候,你的库用户要花费数年时间才会切换到这个新的版本。这就意味着库得去向后兼容你想要支持的最老的Java版本(许多情况下就是Java 6 或者 Java7)。这实际上意味着未来的很长一段时间,你都不能在库中运用Java 9所提供的新特性。幸运的是,多版本兼容jar功能能让你创建仅在特定版本的Java环境中运行库程序选择使用的class版本。

举例1:

jar root

  - A.class

  - B.class

  - C.class

  - D.class

  - META-INF

     - versions

        - 9

           - A.class

           - B.class

说明:

在上述场景中,root.jar 可以在 Java 9 中使用,不过A或B类使用的不是顶层的root.A或root.B 这两个class,而是处在“META-INF/versions/9”下面的这两个。这是特别为 Java9 准备的 class 版本,可以运用 Java 9 所提供的特性和库。同时,在早期的 Java 诸版本中使用这个JAR 也是能运行的,因为较老版本的 Java只会看到顶层的A类或 B 类。

举例2:

jar root

  - A.class

  - B.class

  - C.class

  - D.class

  - META-INF

     - versions

        - 9

           -  A.class

           - B.class

        - 10

           -

  A.class

官方说明:

By this scheme, it is possiblefor versions of a class designed for a later Java platform release to overridethe version of that same class designed for an earlier Java platform release.


3.使用举例

步骤一:提供必要的类

在指定目录(E:\teach\01_Java9\multijar\src\main\java\com\atguigu)下提供如下的类:

【Generator.java】

【Application.java】

在如下目录(E:\teach\01_Java9\multijar\src\main\java-9\com\atguigu)下提供同名的类:

【Generator.java】

步骤二:打包

指令如下:

javac -d build --release 8  src/main/java/com/atguigu/*.java

javac -d build9 --release 9  src/main/java-9/com/atguigu/*.java

jar --create --main-class=Application --file  multijar.jar -C build . --release 9 -C build9 .

步骤三:在java 9 及之前版本的环境下进行测试即可

相关文章

  • java9新特性-6-多版本兼容jar包

    1.官方Feature 238:Multi-Release JAR Files 2.使用说明 当一个新版本的Jav...

  • Maven插件

    控制生成jar包的兼容版本 打包的同时生成对应的源码包

  • java9的新特性

    1、Java9 新特性之---目录结构 包含jdk8及以前的jdk版本,所有目录结构以及目录含义如图: 这个新特性...

  • 修改jar包名

    一 描述 在开发中总会遇到项目中有老版本的jar包,而替换成新版本的jar包项目整体改动巨大,为了兼容老版本,...

  • 2018-12-22

    处理了jdk版本以及jar包不兼容配置文件的问题

  • maven学习笔记

    1, jar库使用最新的版本。新版本总是能够兼容旧版本 2,使用 mvn dependency:tree查看 包依...

  • Java11的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java15的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java12的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java9 手把手教你实现模块化

    IntelliJ IDEA 2017.1 支持Java9的模块化特性 (Project Jigsaw)。 在此版本...

网友评论

      本文标题:java9新特性-6-多版本兼容jar包

      本文链接:https://www.haomeiwen.com/subject/ebvdnxtx.html