Я запускаю сервер приложений Java iPlanet, что-то в нем загружается commons-logging-1.0.4.jar
.
Это нормально, пока одно из моих приложений не вызовет AuthSSLProtocolSocketFactory
, который является другой библиотекой Apache, которая также использует commons-logging
.
Я помещаю банку в путь к классам jvm и получаю эту ошибку:
Invalid class loader hierarchy. You have more than one version of 'org.apache.commons.logging.Log' visible, which is not allowed. (Caused by org.apache.commons.logging.LogConfigurationException: Invalid class loader hierarchy....
Кажется, что commons-logger
не нравится, когда два экземпляра самого себя загружаются в разные загрузчики классов. Я предполагаю, что сервер приложений имеет свой собственный загрузчик классов, который загружает его в первый раз (хотя я не могу найти какую-либо конфигурацию сервера приложений, в которой он упоминается), поэтому, когда мое приложение загружает его во второй раз, оно выдает это исключение.
Я не могу изменить веб-сервер и не могу изменить библиотеку Apache. Предложения?