البرنامج المساعد الذي تم استيراده إلى XPages Project لا يعمل

StackOverflow https://stackoverflow.com/questions/9374792

  •  28-10-2019
  •  | 
  •  

سؤال

في بعض تطبيقات XPages ، أحاول الاستفادة من حزمة org.apache.commons.lang المثبتة كجزء من Domino. أقوم بإضافته إلى plugin.xml في قسم يتطلب:

يتيح لي ذلك استخدام الحزمة ، وتجميع الشفرة وتشغيلها بنجاح. يمكنني تحديث التصميم إلى قواعد بيانات الاختبار ، وعلى الرغم من أنني بحاجة إلى إضافة بيان الاستيراد مرة أخرى لأن عملية تحديث التصميم لا تقوم بتحديث plugin.xml ، إلا أن هذا يعمل على خادم التطوير الخاص بي (8.5.2 FP3 ويعمل على 8.5. .2 FP1 أيضًا).

ومع ذلك ، عندما أحاول تشغيل نفس الرمز على خادم مختلف ، فإنه يفشل مع ClassDefNotFoundError لـ org.apache.commons.lang. لقد فشل هذا في عدد من إصدارات Domino المختلفة وقواعد البيانات المتعددة. إذا قمت بتنظيف قاعدة البيانات وإعادة بنائها ، فسيتم تجميع الشفرة بشكل جيد ، ولكن في وقت التشغيل لا يزال الخطأ موجودًا.

تم تقسيم تثبيت خادم التطوير الخاص بي عبر محركي أقراص ، لكنني لا أتوقع أن تؤدي إضافة الاستيراد إلى plugin.xml إلى تخزين مسار الملف في مكان ما خلف الكواليس.

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

سيتم قبول أي أفكار عن السبب أو الحل بامتنان.

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

المحلول

بعيدًا عن المثالية ، لكنني أنشأت مجلدًا ضمن WebContent \ WEB-INF يسمى lib واستورد ملف jar فيه.يتم تضمين مجلد lib الموجود في هذا المسار تلقائيًا في مسار الإنشاء ، بحيث يصبح أي شيء في هذا المجلد متاحًا تلقائيًا.بعد التحدث إلى الآخرين ، قد يتم تحميل هذا بواسطة ClassLoader آخر ، لذلك لا يتعارض مع إصدار الخادم.إنه ليس مثاليًا ، لكنني أعرف شخصين يعملان على حل أفضل لهذه المشكلة وغيرها من مشكلات مكتبة Apache ، لذلك آمل أن يكون هذا قريبًا.سأضيف تعليقًا عندما يتوفر الحل الأفضل.

نصائح أخرى

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

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