أثناء تطوير Java ، نتواصل أحيانًا مع العديد من المكتبات المحلية ، لذلك عند تعبئة المشروع ، يتعين علينا مواجهة خيار: إما وضع ملف المكتبة مع ملف الجرة ملفوفة ؛ أو لف ملف المكتبة في الجرة.
هناك العديد من مزايا الإصدار لالتفاف مشروع صغير في جرة. هذه المرة ، سوف نشارك طريقة لتضمين JNI في جرة.
[فكرة التنفيذ]
بعد تعبئة مكتبات JNI (DLL ، حتى ، إلخ) في الجرار ، لا يمكننا الوصول إليها من خلال المسارات ، وتعتمد قراءة المكتبة على ملف مكتبة خارجي مع الاسم المقابل ضمن java.library.path. نحتاج فقط إلى إصدارها من حزمة JAR قبل الاتصال بـ JNI ، والتي تشبه عملية نسخ الملفات.
[اختيار موقع النشر]
java.library.path ليس موقعًا ثابتًا ، ويمكنك طباعته باستخدام الرمز التالي:
System.out.println (System.getProperty ("java.library.path")) ؛
على سبيل المثال ، على جهاز الكمبيوتر الخاص بي ، والنتيجة هي:
D://ملفات البرامج (x86)/Java/JRE7/BIN ؛ C:/Windows/Sun/Java/Bin ؛ C:/Windows/System32 ؛ C:/Windows ؛ D:/ملفات البرنامج (x86)/Java/JRE7/BIN/CLIPEN (x86)/java/jre7/lib/i386 ؛ c:/program files (x86)/nvidia Corporation/Physx/Common ؛ C:/Windows/System32 ؛ C:/Windows ؛ C:/Windows/System32/WBEM ؛ C: /Windows/system32/windowspowershell/v1.0/ ؛ e:/deve LOP/JDK1.7.0_71/bin ؛ e:/تطوير/git/cmd ؛ e:/تطوير/git/bin ؛ e: /develop/apache-maven-3.2.1/bin ؛ e:/eclipse-java-luna-sr1-win32/eclipse ؛؛
سيتغير المسار المطلق بسبب أنظمة مختلفة ، لذلك نختار هنا المسار النسبي "." ، وهو في دليل المشروع.
[فئة نشر JNI]
استيراد java.io.file ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.inputStream ؛ استيراد java.util.arrays ؛ استيراد java.util.linkedList ؛ import java.util.list ؛ java.Util.Util.tel. Byte [1024] ؛ Sources = New LinkedList <String> () ؛ // إضافة اسم ملف المكتبة المحلي هنا ، يمكنك أيضًا تعديل وقراءة XML أو خصائص خارجي. ملف (". + file.separator + sourcename) ؛ if (! f.exists ()) {f.createNewFile () ؛ system.out.println ("[jnidev]: الافتراضي jni inition: null) {os.close () ؛ return false ؛} arrays.fill (cache ، (byte) 0) ؛ int allread = iS.Read (cache) ؛ بينما (RealRead! = -1) {Os.Write (ذاكرة التخزين المؤقت ، 0 ، realRead) ؛ realRead = is.read (cache) ؛} os.close () ؛} catch (استثناء e) {system.out.println ("[jnidev]: خطأ في نسخ jni lib!") Main (String [] args) {Jnidevelopment deve = new jnidevelopment () ؛ deve.dodefaultdevelopment () ؛ حاول {system.loadlibrary ( فشل")؛}}}ثم نضع المكتبة المحلية تحت نفس الحزمة مثل هذه الفئة:
[نتيجة التشغيل]
[jnidev]: الافتراضي JNI inition: luajava-1.1.dll
[Jnidev]: الافتراضي Jni inition: libluajava -1.1.so
تحميل المكتبة المحلية بنجاح
لخص
ما سبق هو كل شيء عن المناقشة الموجزة حول تغليف مكتبة JNI في ملف جرة. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الرجوع إلى مواضيع أخرى متعلقة بـ Java على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!