我已经开始用Java 11编写新的应用程序,并且在运行该应用程序时出现以下错误。我读到有关此问题的信息,看起来好像是拆分包的情况。但是我不确定如何解决此问题。
java.lang.module.ResolutionException: Modules slf4j.log4j12 and log4j export package org.apache.log4j to module kubernetes.model.common
我下面是pom中log4j和slf4j的依赖项。
<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>
slf4j-log4j12
包含一个名为org.apache.log4j.MDCFriend
的类。
[我记得这是修复Java 9中更改版本检测模式时发生的log4j 1.x
中的错误,由于Log4j 1.x于2015年8月寿终正寝,因此无法修复该错误,因此引入了SLF4J这个“修复”。不幸的是,在Java模块系统中禁止在log4j jar之外使用org.apache.log4j
软件包,这是导致您看到问题的原因。
此外,请注意,已经为Log4j 1.x创建了安全漏洞CVE-2019-17571。尽管您的应用程序可能不会受到该问题的影响,但它会显示在安全扫描中。
您有几种选择: