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) دليل ويندوز
4) دليل النظام (system32)
5) يحدد مسار متغير بيئة النظام الدليل
4. إذا كان ملف المكتبة الذي تريد تحميله مرتبطًا بشكل ثابت بمكتبات الارتباط الديناميكي الأخرى، على سبيل المثال، TestJNI.dll مرتبط بشكل ثابت بـ Depenency.dll، فيجب عليك الانتباه إلى ما يلي:
1) إذا اخترت
System.load("C://Documents and Settings// TestJNI.dll");
وبعد ذلك، حتى إذا قمت بوضع Depenency.dll ضمن C://Documents and Settings//، فسيظل التحميل يفشل لأنه لا يمكن العثور على ملف dll التابع. لأنه عندما يقوم jvm بتحميل TestJNI.dll، فإنه سيقوم أولاً بتحميل ملف المكتبة Depenency.dll الذي يعتمد عليه TestJNI.dll، ولا يوجد Depenency.dll في الدليل المحدد بواسطة java.library.path، لذلك لا يمكن لـ jvm العثور على التبعية دلل.
لديك طريقتان لحل هذه المشكلة: أولاً، أضف C://Documents and Settings// إلى مسار java.library.path، على سبيل المثال، أضفه إلى مسار النظام. والثاني هو الاتصال أولا
System.load("C://Documents and Settings// Depenency.dll"); اسمح لـ jvm بتحميل Depenency.dll أولاً، ثم اتصل بـ System.load("C://Documents and Settings// TestJNI.dll" );
2) إذا اخترت
System.loadLibrary ("TestJNI")؛
ثم تحتاج فقط إلى وضع Depenency.dll في أي مسار مضمن في java.library.path، بما في ذلك نفس الدليل مثل TestJNI.dll.