簡體   English   中英

無法將infinispan升級到9.1.0.Final:ClassCastException

[英]Can not upgrade infinispan to 9.1.0.Final: ClassCastException

我正在嘗試將infinispan從8.2.4.Final升級到9.1.0.Final,但是在構建tomcat war-file時,嵌入式slf4j出現了一些錯誤。

日志:

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#multiple_bindings

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();

首先,我從“ infinispan-embedded”依賴中排除了slf4j-api,但未成功,因為slf4j是硬編碼的。

其次,我在<packagingExcludes>WEB-INF/lib/infinispan-embedded-9.1.0.Final.jar!/org/slf4j/impl/StaticLoggerBinder.class</packagingExcludes> maven-war-plugin <packagingExcludes>WEB-INF/lib/infinispan-embedded-9.1.0.Final.jar!/org/slf4j/impl/StaticLoggerBinder.class</packagingExcludes>添加了<packagingExcludes>WEB-INF/lib/infinispan-embedded-9.1.0.Final.jar!/org/slf4j/impl/StaticLoggerBinder.class</packagingExcludes> (可能帶有'! '符號,表示我們無法訪問嵌套的jar,但找不到其他變體)。 嘗試失敗。

那么,如何解決此異常? 也許可以使用maven-shade-plugin? 但這對於我的項目來說似乎是無法接受的。

我有問題 我用技巧解決了。 我從依賴項中排除了logback。 我使用infinispan嵌入式作為記錄器。 但是我認為這不是解決問題的正確方法。 我認為“ http://infinispan.org/ ”開發人員需要將有關logger的代碼導出為另一個jar。 然后我們可以排除在Maven中。 實際上,由於另一個任務,依賴記錄器jar是不正確的方法。

我有問題 我用技巧解決了。 我從依賴項中排除了logback。 我使用infinispan嵌入式作為記錄器。 但是我認為這不是解決問題的正確方法。 我認為“ http://infinispan.org/ ”開發人員需要將有關logger的代碼導出為另一個jar。 然后我們可以排除在Maven中。 實際上,由於另一個任務,依賴記錄器jar是不正確的方法。

我寫信給infinispan團隊,他們很快做出了回應。 正如他們所說的infinispan-embedded是“超級jar”一樣,它的意思是“所有依賴關系都在一個之中”。 您可以使用infinispan的每個依賴項代替它。 infinispan-core和您要使用的。

您可以通過在jboss網站上單擊以下鏈接https://developer.jboss.org/message/975209?et=watches.email.thread#975209來查看已解決問題的詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM