Tomcat غير قادر على اختيار مسار الطبقة من ملف بيان

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

  •  06-09-2019
  •  | 
  •  

سؤال

النسخة Tomcat: 5.0.28 JDK: 1.5.0.14

المشكلة:

أنا أستخدم كل من السبات والجنوتات نحن لسنا على أحدث وأكبر إصدار لهذه المكتبات، حيث يحتاج كلاهما إلى إصدار مختلف من مكتبة Apache-Commons.

الحل الذي أخطيته في الاعتبار:

استخدم ملف البيان وتحديد إصدار مختلف من Apache-Commons لكل منهما

يتم نشر تطبيق الويب الخاص بي ك WebApps Myapp

و Lib هو Webapps MyApp Web-Inf Lib

قمت بتعديل البيان .MF في Hibernate3.jar كما يلي

بيان واضح: 1.0

Archiver-Version: Blexus Archiver تم إنشاؤه بقلم: 1.5.0_15-B04 (Sun> Microsystems Inc.) مسار الطبقة: Hibernatelib / SLF4J-API-1.5.2.jar

ووضع SLF4J-API-1.5.5.2.JAR في WebApps MyApp Web-Inf Lib Hibernatelib

الآن أتوقع أن يتم تحميل SLF4J-API-1.5.2.JAR تلقائيا مع السبات ولكن لا يعمل ... Tomcat غير قادر على العثور على ملفات الجرة المحددة في .MF أعلاه

السؤال:

  1. أفعل شيئا خاطئا؟ أم أنها tomcat؟
  2. هل هناك حل آخر لهذه المشكلة؟

لقد حاولت بالفعل فحص ما يلي

  1. فحص لشخصيات خط جديدة في نهاية الملف
  2. إذا قمت بوضع SLF4J-API-1.5.2.jar في مجلد LIB الرئيسي - يزول الخطأ - لذلك أعرف أنه غير قادر على العثور على هذا الملف جرة بالذات
  3. حاول النسبية، المسار المطلق في ملف البيان
هل كانت مفيدة؟

المحلول

المكان الوحيد الذي Class-Path يتم استخدام السمة في البيان هو عندما jar يحتوي على البيان يسمى كجار قابل للتنفيذ باستخدام ("java -jar theFile.jar").

يبدو أن بعض حاويات Servlet تدعمها، ولكن وفقا إلى هذه القائمة البريدية (عذرا، لا يمكن العثور على أي شيء أكثر إذن بسرعة كبيرة) لم يتم تحديده في المواصفات أيضا.

بقدر ما أفهمها، تقوم تطبيقات الويب بتحميل فئاتها عموما باستخدام محمل فئة واحدة. حل "صحيح" أن مشكلة التبعية ستتطلب ما لا يقل عن 2 منصوص أنواع مختلفة.

قد يكون محلول اختراق ISH هو استخدام جارجار أو أداة مماثلة لحزم المكتبات المختلفة مع تبعياتها.

لذلك كنت تنتج واحدة jar تحتوي على السبات مع مكتبة المشاعات Apache وآخر jar تحتوي على الدعامات جنبا إلى جنب مع مكتبة Apache-Commons الخاصة بها. سيتم نقل كل نسخة من مكتبة المشاعات Apache إلى حزم مختلفة (ربما hibernate.org.apache.* و struts.org.apache.*) لحل المشكلة مع إصدارات Classe المختلفة.

نصائح أخرى

هل راجعت أي أذونات صحيحة؟ قد تكون أيضا فكرة لضمان وجود خط جديد بعد هذا الخط الأخير من الفئة، التي ساعدني في وقت سابق اليوم!


تحديث: إذا لم يدعم Tomcat إعلانات ClassPath مثل هذا، فإن الشيء الوحيد الذي ينهار في الذهن ينطوي على العبث مع الكلام. أنا شخصيا لن أفعل ذلك - هناك عالم كامل من الألم المحتمل أسفل هذا المسار، وربما سيكون لديك وقت أسهل فقط في الترقية. آسف لا أستطيع التفكير في إجابة أفضل!

هل جربت أحدث وأكبر نسخة من Tomcat لمعرفة ما إذا كانت المشكلة لا تزال تستمر؟ Tomcat 6 بالفعل عدة سنوات، ناهيك عن 5.5 أو 5.0 ...

لا أعتقد أنه يمكنك القيام بذلك. Tomcat لا ينظر إلى مجرى الجرة لتحديد قضايا ClassPath. إنه يستخدم التسلسل الهرمي الخاص به من لوادر الفئة للعثور على ما تحتاجه، باستخدام ما يقوله ClassPath هو.

إذا كنت تريد إصدارات مختلفة من جرة لأجزاء مختلفة من التطبيق الخاص بك، فأنت تبدو وكأنها الشخص الذي يحتاج حقا Osgi.. وبعد هذه هي المشكلة اخترعت لحلها.

هناك اثنين من المنافسة JSRS هناك، لكنني لا أعرف أي تطبيقات لاقتراح وحدة الشمس.

خادم التطبيق واحد أعرف ذلك سيسمح لك بذلك خادم DM الربيع. وبعد انها شوكة من تومكات التي تعززها.

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