JAR ที่เข้ากันได้กับหลายเวอร์ชัน ฟังก์ชันช่วยให้เราสร้างเวอร์ชันของคลาสที่เราเลือกใช้เฉพาะเมื่อรันโปรแกรมไลบรารีในสภาพแวดล้อม Java เวอร์ชันเฉพาะ เราสามารถระบุเวอร์ชันที่คอมไพล์ผ่าน "--release " พารามิเตอร์
การเปลี่ยนแปลงเฉพาะคือ "MANIFEST.MF " ในไฟล์ "META-INF " ไดเร็กทอรีมีแอตทริบิวต์ใหม่ดังนี้
Multi-Release: true
มีไดเร็กทอรีเวอร์ชันใหม่ภายใต้ "META-INF ไดเร็กทอรี " หากเราต้องการรองรับเวอร์ชัน Java 9 จะมีไดเร็กทอรี 9 อยู่ภายใต้ไดเร็กทอรีเวอร์ชัน
multirelease.jar ├── META-INF │ └── versions │ └── 9 │ └── multirelease │ └── Helper.class ├── multirelease ├── Helper.class └── Main.class
ในตัวอย่างด้านล่าง เราสามารถใช้ JAR ที่เข้ากันได้กับหลายเวอร์ชัน ฟังก์ชันเพื่อสร้างแพ็คเกจ jar สองเวอร์ชันจาก "Test.java " หนึ่งเวอร์ชันคือ jdk 7 และอีกรุ่นคือ jdk 9 จากนั้นเราดำเนินการในสภาพแวดล้อมที่แตกต่างกัน
ขั้นแรก: สร้างโฟลเดอร์ C:/test/java7/com/tutorialspoint และสร้าง "Test.java " ในโฟลเดอร์นี้ดังนี้:
package com.tutorialspoint; public class Test { public static void main(String args[]) { System.out.println("Inside Java 7"); } }
ขั้นตอนที่สอง: สร้างโฟลเดอร์ C:/test/java9/com/tutorialspoint และสร้าง "Test.java " ในโฟลเดอร์นี้ดังนี้:
package com.tutorialspoint; public class Test { public static void main(String args[]) { System.out.println("Inside Java 9"); } }
เราสามารถคอมไพล์โค้ดได้ดังนี้:
C:\test> javac --release 9 java9/com/tutorialspoint/Test.java C:\test> javac --release 7 java7/com/tutorialspoint/Test.java
เราสามารถสร้าง แพ็คเกจ jar ที่เข้ากันได้กับหลายเวอร์ชัน ดังต่อไปนี้
C:\JAVA> jar -c -f test.jar -C java7 . --release 9 -C java9 Warning: entry META-INF/versions/9/com/tutorialspoint/Test.java, multiple resources with same name
ใช้ JDK 7 เพื่อดำเนินการ:
C:\JAVA> java -cp test.jar com.tutorialspoint.Test Inside Java 7
ใช้ JDK 9 เพื่อดำเนินการ:
C:\JAVA> java -cp test.jar com.tutorialspoint.Test Inside Java 9