Конфигурация, чтобы выбрать класс из папки классов вместо папки lib в Tomcat? - PullRequest
2 голосов
/ 26 февраля 2012

У меня есть тот же файл класса в папке классов, а также в файле jar внутри папки lib. Но класс забирается из файла jar.Насколько я понимаю, когда это так, класс в папке классов получает предпочтение над файлом JAR.По крайней мере, это поведение, которое я видел у Glassfish.Но это не поведение в кота.Нужно ли делать какие-либо настройки в случае Tomcat, чтобы отдать предпочтение классам в папке классов?Я использую Tomcat 6.0.26.

1 Ответ

3 голосов
/ 26 февраля 2012

В спецификации (2.4) говорится:

Загрузчик классов веб-приложения должен загружать классы из Сначала каталог WEB-INF / classes, а затем из библиотек JAR в Каталог WEB-INF / lib.

Так что, если Tomcat сначала загружается из банки, это не соответствует спецификации.

Его документация гласит:

Следовательно, с точки зрения веб-приложения, класса или Загрузка ресурса выглядит в следующих репозиториях, в следующем порядке:

  • Начальные классы вашей JVM
  • Классы загрузчика системных классов (описано выше)
  • / WEB-INF / классы вашего веб-приложения
  • / WEB-INF / lib / *. Jar вашего веб-приложения
  • Общие классы загрузчиков классов (описанные выше)

Так что я удивлен, что вы видите такое поведение. Если вы абсолютно уверены, что класс находится не в некотором банке в собственном пути к классам Tomcat, отправьте отчет об ошибке. Перед этим также обязательно очистите рабочий каталог Tomcat или даже начните новую установку Tomcat.

Обходной путь - это, конечно, перепаковать файл JAR, чтобы включить ваш измененный класс вместо того, чтобы полагаться на порядок загрузки классов.

...