【发布时间】:2018-11-15 19:31:52
【问题描述】:
我有一个用 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并将版本指定为11?由于使用--release 11描述log4j-apijar 声明与指令中的名称相同。原因主要是log4j-api是一个模块化的 jar。请注意,另一方面,log4j-core是作为自动模块派生的。 -
谢谢!它有帮助。你想写答案吗?最好使用链接中引用的answer。就我而言,我只需要将 maven 编译器插件的版本升级到 3.8.0。我的 java 版本是 11。
-
做出了回答,因为专门为
log4j-api使用发布标志似乎有轻微的影响,这是一个模块化的 jar。此外,也许图书馆的一些贡献者自己会提供关于模块化的更多细节以及未来使用图书馆的计划。
标签: java maven log4j2 java-module java-11