set classpath กรณีที่ต้องการใช้งาน jar file

มาแชร์ความรู้กันครับ

Problem
ถ้าเราต้องการอ้างถึง jar file เพื่อใช้งานในโปรแกรมจาวา เราต้อง set classpath อย่างไร ?

Solution
ในกรณีที่โปรแกรมจาวาที่เราต้องการใช้งานมีการใช้งาน class ที่อยู่ใน jar file เราจะต้อง set classpath โดยระบุถึง jar file เหล่านั้นด้วย โดย path ที่ระบุใน class path นั้น จะประกอบไปด้วย directory ที่ jar file นั้นอยู่และชื่อของ jar file นั้นด้วย อย่างเช่น ถ้า myjar.jar ที่เราต้องการใช้งานอยู่ใน directory d:\java\libs ในขณะที่ class file อื่น ๆ จะอยู่ใน d:\java\classes ถ้าเราต้องการ set classpath ให้รวมทั้งสองที่นี้ไว้ก็สามารถทำได้ โดยระบุ path ทั้งสองเข้าไว้ด้วยกัน อย่างเช่น

java -cp d:\java\libs\myjar.jar;d:\java\classes ClassName

จะเห็นว่าในการอ้างถึง jar file ที่ต้องการนั้น เราจะต้องระบุชื่อของ jar file นั้นด้วย นอกเหนือจาก directory ที่ jar file นั้นอยู่
สำหรับ platform ที่เป็น Unix (Solaris, Linux หรือ AIX) วิธีการ set classpath สำหรับ jar file ก็เหมือนกัน จะต่างกันก็เพียงแค่ path ใน Unix จะใช้ / แทน และแต่ล่ะ path จะถูกคั่นด้วยเครื่องหมาย : (colon) แทนที่จะเป็น ; (semi-colon) อย่างเช่น

java -cp /java/libs/myjar.jar;/java/classes

สมมุติว่า myjar.jar อยู่ใน directory /java/libs และ class file อื่น ๆ อยู่ใน directory /java/classes
ส่วนเรื่องลำดับของ path ที่ระบุไว้ใน class path นั้น ขึ้นกับว่าเราต้องการให้หา class จาก path ไหนก่อน ลำดับการค้นหา class นั้นจะทำจากซ้ายไปขวา ตามที่กำหนดไว้ใน class path อย่างเช่น ถ้าเราระบุ class path ตามตัวอย่างด้านบน class ใน myjar.jar จะถูกเรียกใช้ก่อน class ที่อยู่ใน directory classes ในกรณีที่เรียกใช้ class ชื่อเดียวกัน เป็นต้น

Comments are closed.