По моему опыту, WEB-INF / классы обычно имеют приоритет над jar-файлами в WEB-INF / lib, однако это также зависит от используемого вами сервлет-контейнера (например, я никогда не мог понять поведение JRun). Было бы очень полезно, если бы вы могли сказать мне, какой контейнер вы используете.
Кроме того, вы уверены, что конфигурация log4j, вызывающая проблемы, находится в банке в WEB-INF / lib? Обычно, когда я сталкиваюсь с проблемами пути к классам в ситуации с контейнером сервлета, это происходит из-за библиотек, которые находятся вне веб-приложения.
Спецификации сервлета рекомендуют , чтобы загрузчики классов веб-приложения загружали свои собственные классы перед делегированием загрузчику классов контейнера (SRV.9.7.2), но, поскольку это противоречит спецификации Java, не все поставщики делают это по умолчанию (фактически Tomcat - единственный контейнер, который я использовал, который делает это по умолчанию). При этом всегда можно настроить поведение загрузки классов вашего веб-приложения. Если вы сообщите мне, какой контейнер вы используете, я смогу вам помочь (в частности, я успешно делал это раньше в WebLogic, WebSphere, Glassfish и JRun)).