سؤال

وأنا باستخدام وحيد القرن من خلال إطار البرمجة الفول إلى إنشاء وتكوين الكائنات في عملية جافا بلدي. بعض الطبقات المستخدمة في النصوص تحتاج إلى تحميلها بشكل حيوي كما أنها لن تكون دائما على CLASSPATH القياسية.

لتحميل هذه الفئات I تهيئة مصنع سياق إطار البرمجة مع محمل فئة مخصصة الذي يقوم بتحميل هذه الفئات من دليل auxilary. هذا يعمل بشكل جيد.

والمشكلة هي أن بعض هذه الفئات، في المنشئات، واستخدام classs الأخرى التي يجب أن يتم تحميلها من هذا الدليل auxilary. وعند النظر إلى مصدر أرى أن محرك جافا سكريبت ببساطة تدعو Constructor.newInstance.

وكيف لي أن أعرف أي classloader الاستخدامات دعوة newInstance، ويمكنني أن حقن بلدي حتى أتمكن من تحميل الفئات التي محمل الدرجة القياسية لا يعرف كيفية تحميل يدويا.

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

المحلول

وحاول إعداد classloader الأم محمل صفك لclassloader التطبيق.

ClassLoader myLoader = new ClassLoader(getClass().getClassLoader()) { 
... your code loading from custom directory ...
}

والطبقات تحميلها من محمل الخاص بك وسوف تستخدم محمل الخاص لبحث الطبقات الأخرى، لذلك تحتاج محمل الخاصة بك لتوفير تلك (عن طريق تفويض إلى الأصل)

نصائح أخرى

وConstructor.newInstance تعمل على مثيل Constructor، الذي ينتمي إلى مثيل Class معين التي تم تحميلها من قبل ClassLoader وجه الخصوص. الطبقات تصل من خلال محمل الطبقية الخاصة.

وحيد ARG Class.forName يستخدم محمل فئة المتصل الفوري ل(وهو API مطيع جدا).

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