Управлять упорядочиванием пути к классу банок в WEB-INF/lib на Tomcat 5?

У меня есть веб-приложение прежней версии, работающее в Tomcat 5.0.

Это веб-приложение имеет две банки в WEB-INF/lib, скажем, Нечто-2.0.jar и Панель-2.0.jar. Панель-2.0.jar на самом деле включает Нечто-1.0.jar в нем. Панель является также мертвым проектом, не означая обновления, никакого источника, но все еще важный для приложения.

Последний выпуск этого приложения требует Нечто-2.0.jar для некоторого другого материала. Наличие и Нечто-1.0.jar и Нечто-2.0.jar в пути к классу создает конфликт, конкретно тип ClassDefNotFound ошибки, где класс, который был позже добавлен в 2,0, не может быть найден в 1,0 и т.д.

В Eclipse простое решение состоит в том, чтобы щелкнуть правой кнопкой по Вашему Проекту, нажать Properties> Java Built Path> Order и Export и переместить Нечто-2.0.jar выше Панели-2.0.jar, таким образом, это решило сначала.

Как каждый выполняет этот тип упорядочивания пути к классу для банок в WEB-INF/lib в Tomcat?

8
задан Robert Campbell 7 January 2010 в 15:12
поделиться

6 ответов

Поместите Foo-1.0.jar в $CATALINE_HOME/общий/установленный (или в любое другое место, куда он будет загружен после Foo-2.0.jar).

3
ответ дан 5 December 2019 в 04:52
поделиться

Можно установить Class-Path в мейнфест банки. http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html Я не могу обещать, что это решит проблему, но стоит попробовать.

0
ответ дан 5 December 2019 в 04:52
поделиться

Это немного халтурно, но может сработать. Измените имя банки Foo-2.0.jar на алфавитное впереди Bar-2.0.jar, скажем AFoo-2.0.jar

.
-2
ответ дан 5 December 2019 в 04:52
поделиться

Стриптизерша Foo-1.0.jar из Bar-2.0.jar. Так как это так, то просто неприятно ждать, когда это произойдет, как для разработки (нужно подтасовать среду dev.), так и для развертывания.

4
ответ дан 5 December 2019 в 04:52
поделиться

Вы не можете, так как эта функция недоступна в Tomcat. Если оба foo-1.0.jar и foo-2.0.jar нужны в классе одновременно, вам понадобится важная реорганизация классов.

Если BAR-2.0 может работать с Foo-2.0, то лучшее, что нужно сделать, чтобы восстановить BAR-2.0 самостоятельно без FO-1.0.jar внутри него.

1
ответ дан 5 December 2019 в 04:52
поделиться

Приоритет классы Tomcat 5 для WebApps составляет примерно следующим образом: сначала загрузочная / система ([ JRE / lib , затем внутренние классы Tomcat), затем библиотеки WebApp (Первая Web-inf / Classes , затем Web-inf / lib ), затем общие библиотеки (первая Tomcat / Common , затем Tomcat / lib ) И, наконец, общие библиотеки Webapp-Share ( Tomcat / Shared ).

Итак, чтобы получить foo-2.0.jar загружен до BAR-2.0.jar , наилучшим образом, что вы можете сделать, это переместить BAR-2.0.jar Из Web-Inf / lib - Tomcat / Common или Tomcat / Shared .

Бар не загружается в алфавитный порядок их имени. По крайней мере, нет спецификации, который говорит это. Переименование их, чтобы изменить порядок алфавитного файла не имеет смысла.

33
ответ дан 5 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: