Java Eclipse: ความแตกต่างระหว่างการเอ็กซ์พอร์ตเป็น JAR และการเอ็กซ์พอร์ตเป็น Runnable JAR


88

eclipse แตกต่างกันอย่างไรระหว่างการเอ็กซ์พอร์ตเป็นไฟล์ JAR และเอ็กซ์พอร์ตเป็นไฟล์ Runnable JAR ทั้งคู่วิ่งไม่ได้เหรอ? ข้อดี / ข้อเสียของแต่ละข้อคืออะไร?

คำตอบ:


99

jar ที่รันได้มีไฟล์ MANIFEST.MF ซึ่งกำหนดคลาส Main ที่จะเรียกใช้เมื่อ jar ถูกรัน

ไหที่ไม่สามารถรันได้เป็นเพียงไลบรารีของคลาสที่สามารถเพิ่มลงในคลาสพา ธ เพื่อให้โค้ดถูกนำมาใช้ซ้ำ (มันมีไฟล์ manifest ด้วย แต่ไม่มีคลาสหลักอยู่ที่นั่น)


เมื่อเราส่งออกไฟล์เป็น jar แทนที่จะเป็น jar ที่รันได้เราต้องระบุคลาสหลักและคลาสพา ธ ไลบรารีใน manifest.mf
นายและ

20

jar ที่รันได้คือไฟล์ jar ที่มีไฟล์ Manifest ในตัวซึ่งมีการประกาศ "Main-Class:" ต้องกำหนด "Main-Class" เพื่อให้รันไทม์ของจาวารู้ว่าจะเรียกคลาสใดเมื่อ "รัน" jar หาก jar ไม่มีรายการที่มี "Main-Class:" จะไม่ถือว่าเป็น "jar ที่รันได้" - เป็นเพียงไลบรารีของโค้ด Java

ฉันเดาว่านี่คือความแตกต่างในวิธีที่ Eclipse ส่งออก jar แต่ไม่แน่ใจ 100%

ดูลิงค์นี้สำหรับข้อมูลเพิ่มเติม: http://www.skylit.com/javamethods/faqs/createjar.html


17

ด้วยไฟล์ JAR มาตรฐานคุณต้องระบุคลาสด้วยเมธอดหลักบนบรรทัดรับคำสั่งเมื่อรัน jar ด้วย JAR ที่รันได้จะมีไฟล์รายการที่จะเก็บข้อมูลนั้นไว้เพื่อให้คุณสามารถพิมพ์java -jar myRunnable.jarหรือดับเบิลคลิกได้


0

ในกรณีของฉันฉันเคยเอ็กซ์พอร์ตเป็น jar เมื่อฉันมีคลาสหลักทั้งหมดและไดเร็กทอรีพา ธ ไลบรารีทั้งหมดที่ระบุใน manifest.mf หากหลายแอปพลิเคชันใช้ไลบรารีเดียวกันก็ไม่จำเป็นต้องเอ็กซ์พอร์ตไลบรารีที่แบ่งใช้สำหรับแต่ละ jar ทำให้โถวิ่งเร็วขึ้น แต่หลายครั้งเนื่องจากปัญหาการกำหนดค่าในคลาสพา ธ ของเซิร์ฟเวอร์ที่แตกต่างกันไม่สามารถเข้าถึงไลบรารีได้และในกรณีนี้ควรส่งออก jar ที่รันได้ซึ่งทำให้ไฟล์ทำงานช้าและมีขนาดใหญ่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.