代码之家  ›  专栏  ›  技术社区  ›  BobCoder

Java 11中的Resolution异常

  •  0
  • BobCoder  · 技术社区  · 5 年前

    我已经开始用Java 11编写一个新的应用程序,在运行该应用程序时,我遇到了以下错误。我读过这个问题,看起来这是一个拆分包的案例。但我不确定如何解决这个问题。

    java.lang.module.ResolutionException: Modules slf4j.log4j12 and log4j export package org.apache.log4j to module kubernetes.model.common
    

    我在pom中有log4j和slf4j的以下依赖关系。

    log4j

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

    log4j2

    当我尝试使用带有以下依赖项的log4j2时,我得到了不同的错误

     <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.7</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.7</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>2.7</version>
    </dependency>
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.6</version>
    

    java.lang.module.ResolutionException: Modules log4j.core and log4j.api export package org.apache.logging.log4j to module java.annotation
    
    0 回复  |  直到 5 年前
        1
  •  3
  •   Naman    5 年前

    slf4j-log4j12 包含一个名为的类 org.apache.log4j.MDCFriend .

    据我回忆,这是为了修复中的一个错误 log4j 1.x 这是在Java 9中更改版本检测模式时发生的。由于Log4j 1.x于2015年8月达到生命周期的终点,因此无法修复该错误,因此SLF4J引入了此“修复”。不幸的是,使用 org.apache.log4j Java模块系统中禁止使用log4jjar之外的包,这就是导致您看到的问题的原因。

    另外,请注意安全漏洞 CVE-2019-17571 已为Log4j 1.x创建。虽然您的应用程序可能不会受到该问题的影响,但它会在安全扫描中显示出来。

    你有几个选择:

    1. 创建针对SLF4J的错误报告,并希望它得到修复。
    2. 创建自己的slf4j-log4j12分支并自己修复。
    3. 从Log4j 1升级到Log4j 2(我建议用于新应用程序的解决方案)。
    4. 使用Log4j 2以外的SLF4J实现。
        2
  •  0
  •   quan changnai    5 年前

    我遇到了同样的错误,但当我使用log4j核心版本2.13.3时,错误消失了。