سؤال

ام الحصول على مشكلة الكلمة. منذ Im newby osgi تماما، نأمل أن الإجابة ليست صعبة :)

أعتقد أنه يجب القيام به مع تركيب مكتبات وقت التشغيل.في Netbeans 6.7.1 خصائص المشروع، يتم دائما نشر Libs Compiletime دائما إلى الفئات الأخرى .. لذلك لا أستطيع التفريق هناك.

عند تجميع FelixHost يتم استخدام الجرات التالية

  • felix.jar.
  • osgi-core.jar.
  • Osgi-compendium.jar.
  • osgi.service.obr-1.0.2.jar.

ولكن عند التشغيل، سيتم تحميل الإطار تنفيذ OBR. تحتوي حزمة OBR هذه أيضا على تعريفات الواجهة. أعتقد أن هذا هو السبب في أن هناك ClasscastException ..

أريد فعلا أن يعمل FelixHost جنبا إلى جنب مع OBR للقيام ببعض التوفير الأولي ..

أي أفكار موضع ترحيب.

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

المحلول

أفترض أنه من خلال "felixhost" أنت تشير إلى مشروعك الذي يغلف وإطلاق إطار Felix.

المشكلة هي أنه يجب أن تكون حذرا بعض الشيء حول الحدود بين "عالم OSGI" و "عالم غير أوسجي". كل ما وضعته على Classpath for Felixhost (أي أيضا جميع تبعيات تجميع الوقت في قضيتك) يعيش بشكل أساسي خارج عالم OSGI، لذلك ليس من المستحسن استخدام حزم مثل "osgi.service.obr-1.0.2.jar" في هذا الطريق.

كما أشرت إذا قام إطار OSGI أيضا بتحميل حزمة "Osgi.service.obr-1.0.2.jar" ستحصل على ClasscastException لأن لديك أساسا نسختين من نفس الفئات (الواجهات).

أحد الحل المحتمل لهذه المشكلة هو فصل منطق التوفير الأولي الخاص بك إلى حزمة منفصلة والقيام بعمل OBR من داخل عالم OSGI. وبعد ثم يمكنك إزالة تبعية ترجمة Felixhost على "osgi.service.obr-1.0.2.jar" وليس لديك سوى نسخة واحدة من واجهات OBR المحملة.

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