java 9 多版本兼容 jar 包
多版本兼容 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 在以下实例中,我们使用多版本兼容 jar 功能将 tester.java 文件生成了两个版本的 jar 包, 一个是 jdk 7,另一个是 jdk 9,然后我们再不同环境下执行。
第一步
创建文件夹 c:/test/java7/com/runoob,并在该文件夹下创建 test.java 文件,代码如下:
实例
package com.runoob;
public class tester {
public static void main(string[] args) {
system.out.println("inside java 7");
}
}
public class tester {
public static void main(string[] args) {
system.out.println("inside java 7");
}
}
第二步
创建文件夹 c:/test/java9/com/runoob,并在该文件夹下创建 test.java 文件,代码如下:
实例
package com.runoob;
public class tester {
public static void main(string[] args) {
system.out.println("inside java 9");
}
}
public class tester {
public static void main(string[] args) {
system.out.println("inside java 9");
}
}
编译源代码:
c:test > javac --release 9 java9/com/runoob/tester.java c:java > javac --release 7 java7/com/runoob/tester.java
创建多版本兼容 jar 包
c:java > jar -c -f test.jar -c java7 . --release 9 -c java9 . warning: entry meta-inf/versions/9/com/runoob/tester.java, multiple resources with same name
使用 jdk 7 执行:
c:java > java -cp test.jar com.runoob.tester inside java 7
使用 jdk 9 执行:
c:java > java -cp test.jar com.runoob.tester inside java 9
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!