Java &引用;log4j:警告找不到追加器“;从可执行jar运行应用程序时出错,但在IntelliJ中运行时没有错误

Java &引用;log4j:警告找不到追加器“;从可执行jar运行应用程序时出错,但在IntelliJ中运行时没有错误,java,log4j,Java,Log4j,我使用的是log4j2,但我的一些依赖项使用的是log4j。当我从一个可执行jar文件运行应用程序时,我只得到几行日志和以下消息: log4j:WARN No appenders could be found for logger (org.reflections.Reflections). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/

我使用的是log4j2,但我的一些依赖项使用的是log4j。当我从一个可执行jar文件运行应用程序时,我只得到几行日志和以下消息:

log4j:WARN No appenders could be found for logger (org.reflections.Reflections).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
但是,当我在IntelliJ内部运行应用程序时,它会按预期工作,不会产生任何警告和所有日志

我用maven enforcer来禁止log4j。我还尝试添加依赖项,但将范围设置为“提供”


log4j
这可能意味着我收到了这个错误消息,因为log4j不知何故潜入了我的jar,我似乎无法阻止它

任何关于如何解决此问题的建议都将不胜感激。谢谢

请注意,我使用的是log4j2和以下依赖项

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api</artifactId>
  <version>2.8.2</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.8.2</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-slf4j-impl</artifactId>
  <version>2.8.2</version>
  <type>pom</type>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-1.2-api</artifactId>
  <version>2.8.2</version>
</dependency> 

org.slf4j
slf4j api
1.7.25
org.apache.logging.log4j
log4japi
2.8.2
org.apache.logging.log4j
log4j型芯
2.8.2
org.apache.logging.log4j
log4j-slf4j-impl
2.8.2
聚甲醛
org.apache.logging.log4j
log4j-1.2-api
2.8.2

我使用下面的Maven命令来查找log4j中的依赖项

mvn dependency:tree -Dincludes=log4j:log4j
原来log4j是由一个Maven插件(Maven-hyperjaxb3-plugin)拉进来的,出于某种原因,Maven enforcer插件没有阻止它。当我在IntelliJ中运行应用程序时,插件没有被触发,因此依赖项没有包含在类路径中,但是当编译成可执行jar时,它仍然被拉入

这个常见问题解答和这个问题的答案非常有用


很明显,问题是log4j正在进入jar,如果您打算使用log4j2,那么log4j不能包含在类路径中。

不,这不是重复的。我有所有必需的配置文件,包括log4j.properties或.xml文件,根据文档,这是特别要避免的。我已经有一个正确配置的log4j2.xml文件。
mvn dependency:tree -Dincludes=log4j:log4j