Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

อะไรคือการใช้ jar ที่เข้ากันได้กับหลายเวอร์ชันใน Java 9?


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