一个多版本发布的jar文件(也称为mrjar)包含了同一个库的多个Jdk版本的发布。这意味着我们可以拥有一个适用于Jdk 9的mrjar库。在mrjar中的代码包含了在Jdk 9中编译的class文件。使用Jdk 9编译的类可以利用Jdk 9提供的API。
这个mrjar可以扩展一个jar文件的已有目录结构。它包含一个根目录,其中包含了所有的内容,以及一个META-INF目录,用于存储关于该jar文件的元数据。通常,一个jar文件包含一个META-INF/MANIFEST.MF文件,其中包含了属性。
jar文件中的条目如下:
- jar-root - C1.class - C2.class - C3.class - C4.class - META-INF - MANIFEST.MF
In the above template, the jar contains four class files and a MANIFEST.MF file. The mrjar extends the META-INF directory to store classes that can be specific to the Jdk version. The META-INF directory contains version sub-directory that contains many sub-directories, each of them named the same as Jdk major version. For instance, the classes specific to Jdk 9, there is a META-INF/versions/9 directory. For classes specific to Jdk 10, there is META-INF/versions/10.
- jar-root - C1.class - C2.class - C3.class - C4.class - META-INF - MANIFEST.MF - versions - 9 - C2.class - C5.class - 10 - C1.class - C2.class - C6.class