1. สามารถใช้โหลดไฟล์ไลบรารี่ได้ทั้งหมด ไม่ว่าจะเป็นไฟล์ไลบรารี JNI หรือไฟล์ไลบรารีที่ไม่ใช่ JNI ต้องโหลดไฟล์ไลบรารี JNI ที่เกี่ยวข้องโดยใช้หนึ่งในสองวิธีเหล่านี้ ก่อนที่จะเรียกใช้วิธีเนทิฟใดๆ
2. พารามิเตอร์ System.load คือพาธสัมบูรณ์ของไฟล์ไลบรารี ซึ่งสามารถเป็นพาธใดก็ได้
ตัวอย่างเช่น คุณสามารถโหลดไฟล์ไลบรารี JNI ใต้แพลตฟอร์ม windows ได้ดังนี้:
System.load("C://Documents and Settings//TestJNI.dll");.
3. พารามิเตอร์ System.loadLibrary คือชื่อไฟล์ไลบรารีและไม่รวมนามสกุลของไฟล์ไลบรารี
ตัวอย่างเช่น คุณสามารถโหลดไฟล์ไลบรารี JNI ใต้แพลตฟอร์ม windows ได้เช่นนี้
System.loadLibrary ("TestJNI");
ที่นี่ TestJNI.dll ต้องอยู่ในเส้นทางที่ตัวแปร jvm java.library.path ชี้ไป
ค่าของตัวแปรนี้สามารถได้รับดังนี้:
System.getProperty("java.library.path");
ตามค่าเริ่มต้น ภายใต้แพลตฟอร์ม Windows ค่านี้ประกอบด้วยตำแหน่งต่อไปนี้:
1) บางไดเร็กทอรีที่เกี่ยวข้องกับ jre
2) ไดเร็กทอรีปัจจุบันของโปรแกรม
3) ไดเร็กทอรี Windows
4) ไดเร็กทอรีระบบ (system32)
5) เส้นทางตัวแปรสภาพแวดล้อมของระบบระบุไดเร็กทอรี
4. หากไฟล์ไลบรารีที่คุณต้องการโหลดเชื่อมโยงแบบคงที่กับไลบรารีลิงก์ไดนามิกอื่น ๆ เช่น TestJNI.dll เชื่อมโยงแบบคงที่กับ dependency.dll คุณต้องใส่ใจกับ:
1) หากคุณเลือก
System.load("C://Documents and Settings// TestJNI.dll");
แม้ว่าคุณจะใส่ dependency.dll ไว้ใต้ C://Documents and Settings// การโหลดจะยังคงล้มเหลวเนื่องจากไม่พบ dll ที่ขึ้นต่อกัน เนื่องจากเมื่อ jvm โหลด TestJNI.dll อันดับแรกจะโหลดไฟล์ไลบรารี dependency.dll ที่ TestJNI.dll ขึ้นอยู่กับ และ dependency.dll ไม่ได้อยู่ในไดเร็กทอรีที่ระบุโดย java.library.path ดังนั้น jvm จึงไม่พบการพึ่งพา .dll
คุณมีสองวิธีในการแก้ปัญหานี้ ขั้นแรก เพิ่ม C://Documents and Settings// ลงในพาธของ java.library.path เช่น เพิ่มลงในพาธของระบบ ประการที่สองคือการโทรก่อน
System.load("C://Documents and Settings// dependency.dll"); ให้ jvm โหลด dependency.dll ก่อน จากนั้นจึงเรียก System.load("C://Documents and Settings// TestJNI.dll" );
2) หากคุณเลือก
System.loadLibrary ("TestJNI");
จากนั้น คุณเพียงแค่ต้องใส่ dependency.dll ในพาธใดๆ ที่รวมอยู่ใน java.library.path รวมถึงไดเร็กทอรีเดียวกันกับ TestJNI.dll