Невозможно обновить Infispan до 9.1.0. Наконец: ClassCastException

Я пытаюсь обновить infinispan с 8.2.4.Final до 9.1.0.Final, но получаю некоторые ошибки из встроенного slf4j при создании war-файла tomcat.

Журналы:

SLF4J: путь к классу содержит несколько привязок SLF4J.

SLF4J: Обнаружена привязка в [jar:file:/C:/tomcat/webapps/ROOT/WEB-INF/lib/infinispan-embedded-9.1.0.Final.jar!/Org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Обнаружена привязка в [jar:file:/C:/tomcat/webapps/ROOT/WEB-INF/lib/logback-classic-1.1.6.jar!/Org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: См. http://www.slf4j.org/codes.html для объяснения.

SLF4J: фактическое связывание имеет тип [org.jboss.slf4j.JBossLoggerFactory] 20-Jul-2017 16:07:34.170

ОШИБКА [Соединение RMI TCP (5)-127.0.0.1] com.myapp.context.LogbackLoggingConfigurator.configureLoggingExternal Загрузка конфигурации регистратора из C: \ my-files \ conf \ logback.xml

java.lang.ClassCastException: org.jboss.slf4j.JBossLoggerFactory не может быть приведен к ch.qos.logback.classic.LoggerContext

Код, указанный в логах:

public void configureLogging(final URL config) {
    final LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();

    try {
        lc.reset();

        final JoranConfigurator configurator = new JoranConfigurator();
        configurator.setContext(lc);
        configurator.doConfigure(config);
    } catch (final JoranException je) {
        logger.error("Unable to configure logback", je);
    }
    StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
}

И неправильная строка здесь: final LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();

Во-первых, я исключил slf4j-api из зависимости "встраиваемый в бесконечность", но безуспешно, потому что slf4j жестко закодирован.

Во-вторых, я добавил <packagingExcludes>WEB-INF/lib/infinispan-embedded-9.1.0.Final.jar!/org/slf4j/impl/StaticLoggerBinder.class</packagingExcludes> к maven-war-plugin (возможно, с символом '!' мы не можем получить доступ к вложенным банкам, но я не нахожу других вариантов). Попытка не удалась.

Итак, как я могу исправить это исключение? Может быть, можно использовать maven-shade-plugin? Но это кажется неприемлемым для моего проекта.

2 ответа

У меня есть некоторые проблемы. Я решаю это с помощью хитрости. Я исключаю logback из зависимостей. Я использовал InfinSpan-Embedded в качестве регистратора. Но я думаю, что это не правильный способ решить проблему. Я думаю, что " http://infinispan.org/" разработчики должны экспортировать коды о регистраторе в качестве еще одного jar. Тогда мы можем исключить в Maven. На самом деле это не правильный способ быть зависимым логгером из-за другой задачи.

У меня есть некоторые проблемы. Я решаю это с помощью хитрости. Я исключаю logback из зависимостей. Я использовал InfinSpan-Embedded в качестве регистратора. Но я думаю, что это не правильный способ решить проблему. Я думаю, что " http://infinispan.org/" разработчики должны экспортировать коды о регистраторе в качестве еще одного jar. Тогда мы можем исключить в Maven. На самом деле это не правильный способ быть зависимым логгером из-за другой задачи.

Я написал команде Infispan, и они быстро ответили. Как они сказали, в InfinSpan-Embedded есть "Uber-JAR", что означает "все зависимости в одном". Вы можете использовать каждую зависимость бесконечности вместо нее. ядро infinispan и которое вы хотите использовать.

Вы можете просмотреть подробности открытого вопроса, перейдя по этой ссылке https://developer.jboss.org/message/975209?et=watches.email.thread на веб-сайте jboss.

Другие вопросы по тегам