Общий конфликт с журнальным банком с клиентом мыла оси apache
Я получаю это исключение при попытке вызвать веб-сервис SOAP с использованием оси. в основном я написал осевого клиента.
org.apache.commons.discovery.DiscoveryException: Class org.apache.commons.logging.impl.SLF4JLogFactory does not implement org.apache.commons.logging.LogFactory.
Когда я удаляю все банки с общим протоколированием, я мог бы удалить эти ошибки, но эти банки поступают из другого apis, я не контролирую их.
Есть ли способ преодолеть эту проблему?
Ответы
Ответ 1
Существует довольно подробное объяснение того, что может быть проблемой, и способы его отладки в документации ведения журналов сообщества. Ваша конкретная проблема может быть,
Существует еще один необычный способ, с помощью которого этот прилив может потерпеть неудачу: даже если двоичный файл совместим, класс реализации, загруженный в время выполнения может быть связано с другим экземпляром класса LogFactory. Дополнительную информацию см. В техническом руководстве.
Ответ 2
Ссылка на вышеупомянутую Документацию в раздел "Исправления" предлагает включить
-Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
в настройках.
Для некоторых людей легче включить этот код:
static
{
System.setProperty(LogFactory.FACTORY_PROPERTY, LogFactory.FACTORY_DEFAULT);
}
Ответ 3
Ни одно из этих решений не помогло мне. Я нашел свое решение в документации по SLF4J
http://slf4j.org/faq.html#excludingJCL
альтернатива 2) при условии охвата Commons-logging может быть достаточно простым и удобно исключить в качестве зависимости, объявив ее в область действия в файле pom.xml вашего проекта. Настоящий классы регистрации общего доступа будут предоставлены jcl-over-slf4j. Этот переводит в следующий фрагмент файла pom:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.21</version>
</dependency>
Первое объявление зависимости по существу утверждает, что регистрация вашего сообщества будет "как-то" предоставлена вашей средой. Второе объявление включает в ваш проект jcl-over-slf4j. Как jcl-over-slf4j - идеальная бинарно-совместимая замена для регистрация общего пользования, первое утверждение становится правдой. К несчастью, при объявлении регистрации в общем доступе получает задание готово, ваша IDE, например Eclipse, все еще будет размещать commons-logging.jar на путь к классу проекта, видимый вашей IDE. Вам нужно будет сделать убедитесь, что jcl-over-slf4j.jar виден перед commons-logging.jar ваша IDE.
Документация SLF4J дает больше альтернатив, у меня это сработало.
Ответ 4
Замените банку jcl-over-slf4j банкой для регистрации общих