كيفية الحصول على الفصل للحزمة في الاعتدال؟
-
19-09-2019 - |
سؤال
لقد قرأت الكثير من رمز الإعتدال لهذا الغرض، ولكن لا يزال لا يزال من غير قادر على معرفة طريقة غير مكروقات للحصول على مجموعة الكلات للحصول على حزمة OSGI في إعداد Eclipse Equinox. هناك واحد؟
المحلول
الإجابة القصيرة (بالتأكيد لشركة OSGI 4.1، غير متأكد من 4.2) لا يمكنك الحصول على Classlader Bundle. ومع ذلك Bundle
واجهة تعرض أ loadclass ()
الطريقة وهذا من شأنه أن يسمح لك بكتابة طبقة نصية يلف واجهة برمجة التطبيقات الحزمة والمندوبين إلى ذلك loadClass()
طريقة. أو يمكنك توفير بعض الوقت واستخدام الربيع DM bundledlegatingclasslasloader.
فئة بدلا من ذلك.
نصائح أخرى
في OSGI 4.3 يمكنك استخدام:
bundle.adapt(BundleWiring.class).getClassLoader()
يمكن الحصول على محمل الفئة من حزمة من خلال واجهة BundleWiring. هنا مثال قصير:
Bundle bundle = bundleContext.getBundle();
BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
ClassLoader classLoader = bundleWiring.getClassLoader();
في رمز Java العادي، يمكنك الحصول على Loader Class الذي قام بتحميل كائن معين
object.getClass().getClassLoader();
أو حتى فقط
SomeType.class.getClassLoader();
الأمر نفسه ينطبق على الإعتدال، ما عليك سوى استخدام كائن أو اكتب يأتي من الحزمة التي تهتم بها.