java - 编译失败:找不到模块:org.apache.logging.log4j
问题描述
我有一个用 Java 11 编写的简单应用程序。mvn clean verify
(maven 3.6.0)执行错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project parser: Compilation failure
[ERROR] ...src/main/java/module-info.java:[2,32] module not found: org.apache.logging.log4j
依赖项:
<log4j.version>2.11.1</log4j.version>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
模块信息.java:
module abc {
requires org.apache.logging.log4j;
}
Log4j2 配置是默认配置,在 .xml 文件中。用法:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
private static final Logger logger = LogManager.getLogger(Abc.class);
logger.info("Boom!");
我尝试了有关 stackoverflow 的所有相关问题,但均未成功。
解决方案
您应升级到maven-compiler-plugin:3.8.0
并将版本指定为 11。
原因是,在描述log4j-api.jar
使用--release 11
状态时与您的指令中的名称相同。
jar --file=.../.m2/repository/org/apache/logging/log4j/log4j-api/2.11.1/log4j-api-2.11.1.jar --describe-module --release 11
releases: 9
org.apache.logging.log4j jar:file://.../.m2/repository/org/apache/logging/log4j/log4j-api/2.11.1/log4j-api-2.11.1.jar/!META-INF/versions/9/module-info.class
exports org.apache.logging.log4j
exports org.apache.logging.log4j.message
exports org.apache.logging.log4j.simple
exports org.apache.logging.log4j.spi
exports org.apache.logging.log4j.status
exports org.apache.logging.log4j.util
requires java.base mandated
uses org.apache.logging.log4j.message.ThreadDumpMessage$ThreadInfoFactory
uses org.apache.logging.log4j.spi.Provider
uses org.apache.logging.log4j.util.PropertySource
这主要是因为 log4j-api 是一个模块化 jar。
另一方面,log4j-core
作为自动模块派生,仍然在其MANIFEST.MF中被覆盖为
org.apache.logging.log4j.core
推荐阅读
- bootstrap-4 - Bootstrap:不需要的手风琴行为
- git - 尝试将我的文件从 git 推送到 github 时出现错误,并发生此错误
- javascript - 如何使用外部 div 元素的 Onclick 事件
- go - 无论我是否关闭频道,地图缩小都不起作用
- c# - Linq 在同一个表中具有 case 条件,并在 where 条件下从其他表中计数
- mongodb - 无法对 Kubernetes 上的 mongodb 隐藏成员进行身份验证,“身份验证失败。”
- json - 如何迭代嵌套的 json 数组并根据条件更新节点的属性?
- opengl - GPU 射线投射(单程),在球坐标中具有 3d 纹理
- mongodb - robo 3t - 对阵列的聚合查询失败
- wso2 - 调用中介端点类型(XPath)