簡體   English   中英

java.lang.IllegalAccessError:試圖從類 org.slf4j.LoggerFactory 訪問字段 org.slf4j.impl.StaticLoggerBinder.SINGLETON

[英]java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory

我在運行 GWT 應用程序時遇到此錯誤。

我的類路徑中有這些 jar 文件: slf4j-api & slf4j-log4j12

知道可能是什么原因嗎?

此問題是由於 slf4j-log4j12 jar 中的更改造成的。 從 1.5.6 版開始,它不允許訪問字段 org.slf4j.impl.StaticLoggerBinder.SINGLETON。

要解決它,請為 slf4j-api 和 slf4j-log4j12 使用最新的 jars(或至少版本 1.5.6 以上)。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.5.6</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

終於在我的 SpringBoot 應用程序中解決了這個問題。 如果更新版本沒有幫助,這可能會有所幫助。 有時其他庫可能會帶來此依賴項的不同版本。 這些是步驟:

  1. 通過錯誤堆棧跟蹤找出導致此問題的依賴項
  2. 獲取 maven 依賴插件樹。 使用此樹詳細信息可了解此庫是否作為其他依賴項的一部分出現。 就我而言, logback-classiclog4j-over-slf4j出現了這個問題。 他們在spring-boot-starter-web下走到了一起
  3. 使用<exclusions><exclusion></exclusion></exclusions>在您的pom.xml中的該依賴項中用於提供此問題的庫。 就我而言,它看起來像這樣:
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j-over-slf4j</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

參考:
http://www.slf4j.org/faq.html#IllegalAccessError
http://www.slf4j.org/codes.html#multiple_bindings

暫無
暫無

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

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