当前位置: 首页 > 知识库问答 >
问题:

"log4j: WARN找不到应用程序"从可执行jar运行应用程序时出错,但在IntelliJ内部运行时没有出错

后学
2023-03-14

我使用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。我还尝试添加依赖项,但将范围设置为“提供”。

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>[0.0,1.2.17)</version>
  <scope>provided</scope>
</dependency>

我也用一个版本号而不是一个范围来完成上面的工作。当应用程序在IntelliJ中运行时,所有这些功能都有效,但当应用程序作为可执行jar运行时,这些功能都无效。

如何配置Hibernate 4中的日志记录以使用SLF4J这个问题的答案表明,我收到了这个错误消息,因为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> 

共有1个答案

仲阳朔
2023-03-14

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

mvn dependency:tree -Dincludes=log4j:log4j

事实证明,log4j被一个Maven插件(maven-hyjaxb3-plugin)拉了进来,出于某种原因,maven-执法者-插件没有阻止它。当我在IntelliJ中运行应用程序时,插件没有被触发,所以依赖项不包括在类路径中,但是当编译成可执行jar时,它仍然被拉进来。

这个常见问题http://logging.apache.org/log4j/2.x/faq.html#which_jars和这个问题的答案使用单个log4j2 xml文件配置log4j2和log4j非常有用。

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

 类似资料:
  • 开始调试时,出现以下错误: 正在启动lib\main。调试模式下ONEPLUS A5000上的dart。。。lib\main。dart:1E/AndroidRuntime(11211):以书面形式命名,pkgName:com。刚出现的包裹azabazar E/AndroidRuntime(11211):致命异常:主E/AndroidRuntime(11211):进程:com。刚出现的包裹阿扎巴扎,

  • 我是Android Studio的新手。我现在使用它是希望获得一些错误消息,以解释为什么我的APK不能在蓝色堆栈中运行。APK是在Unity中建造的。 在安装了Android Studio,一个手机模拟器等之后,我仍然无法运行apk。它说: 在堆栈溢出中已经有一个关于这个错误的帖子。但是,我的AndroidManifest.xml在我看来很好。我也尝试过‘无效缓存/重新启动’但没有效果。当我转到“

  • 我已经使用Maven“mvn clean package”打包了一个Spring Boot服务,并且能够成功地创建JAR。但是当我使用下面的命令“java-jar\target\noentenimnininc-0.0.1-snapshot.jar”从命令行运行它时,我会得到下面的错误:: 这是主类

  • 我想从intelliJ运行我的spring-boot应用程序,而不是使用终端,但它不允许,它只是抛出了一大堆错误,而当我从中的终端运行时,应用程序会按预期启动。 通过intelliJ(右上角的run按钮)运行时: 但当我去跑的时候: 在终端中,我的应用程序启动,我可以开始对服务器进行http调用。

  • 我是Grails的新手,我用GVM工具安装了它,并试图从终端运行一个默认应用程序,只需尝试以下命令:Grails create-app demo和Grails run-app,我得到了一个巨大的错误: 编辑:问题解决了,只需升级JDK版本。

  • 我在一个项目中工作,所以我有下面的代码: 但问题是,我得到了这个错误: 处理命令时发生未知的服务器端错误。原始错误:执行adbexec时出错。原始错误:“command”c:\users\dnkos\appdata\local\android\sdk\platform-tools\adb.exe-p 5037-s emulator-5554 install-r c:\users\dnkos\app