سؤال

على سبيل المثال:لدي اثنين من الكائنات المشتركة (الأمر نفسه ينطبق على .dlls).أول مشترك كائن من طرف ثالث مكتبة, ونحن نسميها libA.لذلك.لدي ملفوفة بعض من هذا مع JNI وخلق بلدي مكتبة libB.لذلك.الآن libB يعتمد على libA.

عندما webstarting ، سواء المكتبات الأماكن في بعض webstart منطقة العمل.بلدي كود جافا محاولات لتحميل libB.في هذه النقطة على محمل نظام سوف محاولة تحميل libA التي ليست في نظام المكتبة المسار (جافا.المكتبة.المسار لن يساعد هذا).والنتيجة النهائية هي أن libB قد غير راضين الرابط و لا يمكن استخدامها.

لقد حاولت التحميل libA قبل libB, ولكن هذا لا يزال لا يعمل.يبدو أن نظام التشغيل يريد أن التحميل بالنسبة لي.هل هناك أي طريقة يمكن أن تجعل هذا العمل غير ثابت ترجمة ؟

هل كانت مفيدة؟

المحلول 2

ثابت تجميع ثبت أن الطريقة الوحيدة webstart متعددة تعتمد الأم المكتبات.

نصائح أخرى

لست متأكدا إذا كان هذا سيكون التعامل بنفس الطريقة تماما عن webstart ، ولكن وقعنا في هذه الحالة في تطبيق سطح المكتب عند التعامل مع مجموعة من الأم المكتبات (dlls في حالتنا).

تحميل libA قبل libB يجب أن تعمل إلا واحدة من تلك المكتبات لديها التبعية التي هي في عداد المفقودين وليس في المسار.ما أفهمه هو أنه بمجرد أن يحصل على نظام استدعاء loadLibrary (أيجافا وجدت مكتبة في جافا.المكتبة.الطريق و هو الآن يقول OS لتحميله) - هو تعتمد اعتمادا كليا على نظام التشغيل للبحث عن أي تعتمد المكتبات ، لأنه في هذه النقطة هو نظام التشغيل الذي يتم تحميل المكتبة من أجل عملية التشغيل فقط يعرف كيف تبدو في مسار النظام.التي يبدو من الصعب في حالة Webstart التطبيق ، ولكن هناك طريقة للتغلب على هذا أن لا تنطوي على ساكنة تجميع.كنت قد تكون قادرة على المراوغة حيث المكتبات - أنا غير متأكد

إذا كنت تستخدم مخصص classloader ، يمكنك تجاوز loadLibrary و findLibrary بحيث يمكن تحديد موقع المكتبات من داخل جرة في classpath ، وإذا كنت أيضا جعله على بينة من مكتبة الأم تبعيات (أيlibB يعتمد على libA يعتمد على libX ، ثم عند تحميل libB يمكنك التقاط نفسك و تضمن لك تحميل libA الأولى في التحقق من أن إشعار وتحميل libX الأولى.ثم OS لا تحاول أن تجد المكتبة التي ليست في المسار الخاص بك.إنه klunky و مؤلمة قليلا, ولكن ضمان جافا يجد لهم ويحمل كل منهم في الترتيب الصحيح يمكن أن تعمل.

على حد سواء الأم المكتبات تعبئتها في توقيع جرة وهي مدرجة كما

<nativelib ...> 

في JNLP الملف ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top