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

错误使用'mvnSpring启动:运行';但不是java-jar或intelliJ

贺雅健
2023-03-14

mvn清洁安装-成功构建。

java-jar-app成功运行。

mvn spring启动:运行-引发错误:

检测到类路径上的log4j-over-slf4j.jar和绑定slf4j-log4j12.jar,抢占StackOverflow Error。有关更多详细信息,请参阅http://www.slf4j.org/codes.html#log4jDelegationLoop。

[INFO] Building Application 3.1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:2.1.1.RELEASE:run (default-cli) > test-compile @ service-app >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ service-app ---`enter code here`
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 5 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ service-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ service-app ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\name\workspace\project\service-app\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ service-app ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< spring-boot-maven-plugin:2.1.1.RELEASE:run (default-cli) < test-compile @ service-app <<<
[INFO]
[INFO]
[INFO] --- spring-boot-maven-plugin:2.1.1.RELEASE:run (default-cli) @ service-app ---
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/name/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/name/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError.
SLF4J: See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.
[WARNING]
java.lang.reflect.InvocationTargetException

什么是mvn spring boot:以不同的方式运行?

[错误]无法执行目标组织。springframework。boot:spring boot maven插件:2.1.1。发布:在project service app上运行(默认cli):运行时发生异常。null:InvocationTargetException:ExceptionInInitializerError:检测到两个log4j-over-slf4j。jar和绑定slf4j-log4j12。jar在类路径上,抢占StackOverflowerr。另见http://www.slf4j.org/codes.html#log4jDelegationLoop更多细节-

共有2个答案

夏侯和韵
2023-03-14

在您的应用程序中,有两种类型的记录器。

1 SLF4J(只是一个抽象,没有实际的日志记录,所以您可以切换到不同的实现)

2 Log4j1(这是一个实现,实际的日志记录由它完成)

应用程序中发生的是

slf4j-log4j12。jar-这个jar将把任何对slf4j记录器(org.slf4j.Logger)的调用路由到log4j1。

log4j-over-slf4j。jar-这个jar将把对log4j记录器(org.apache.log4j.Logger)的任何调用路由到slf4j。(当应用程序使用log4j记录器进行编码,并且希望将所有日志调用重定向到SLF4J时,通常会使用这个jar,这样就可以在不更改任何代码的情况下将日志框架更改为SLF4J)。

当您在类路径中使用这两个jar时,它会在slf4j之间循环日志事件-

根据您的需求,无论您是想使用slf4j、log4j、log4j-over-slf4j,还是使用log4j的slf4j,您都需要选择类路径中可用的正确依赖项。对于您的问题,您需要从类路径中排除slf4j-log4j12.jarlog4j-over-slf4j.jar

李良策
2023-03-14

检测到类路径上的log4j-over-slf4j.jar和绑定slf4j-log4j12.jar,抢占StackOverflow Error。有关更多详细信息,请参阅http://www.slf4j.org/codes.html#log4jDelegationLoop。

之所以会出现这种情况,是因为在类路径中有多个SLF4J Logger的实现。您必须清理POM文件,只保留一个实现。

您可以尝试排除冲突的依赖项,

<exclusions>
  <exclusion> 
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
  </exclusion>
  <exclusion> 
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusion>
</exclusions> 
 类似资料:
  • 使用命令获取此错误: jar是用mvn clean包和mvn安装构建的 聚甲醛

  • 项目Spring引导1..5.7版本。我正在使用Intellij IDEA 2017.2.4和gradle进行依赖性管理。当我构建项目时,它成功构建,没有错误。当我用bootRun gradle任务运行应用程序时,它显示以下错误。

  • 我正在尝试执行Spring引导;使用mvn spring-boot:run可以很好地工作。但是当我尝试将它打包为jar(我将依赖项移到lib,将二进制移到bin,将资源移到resources文件夹)命令是java-cp lib/;bin/;resource/*com.sample.sampleboot(sampleboot的jar在bin中可用)这会启动并打印main中提到的行,但是当调用appl

  • 下面的Ant构建编译成功。 它也不在指定的类路径中创建jar文件。 build.xml 编辑:让它运行。没有编辑Build.xml,而是转到,由于某种原因,未选中运行目标。 我检查了它,现在目标运行,但会产生下面的错误日志。 我是否需要对xml文件进行编辑才能运行它并创建一个JAR?

  • 我在上安装了。它工作得很好,但自从我重新启动我的系统,我遇到了一个问题。 问题是没有启动,但像往常一样运行。当我时,它表示Apache正在运行。 我尝试在的中更改端口,但MySQL仍然无法启动。 以下是我尝试启动时的最新日志

  • 我对Spring靴不熟悉。任何时候我运行我的Spring启动应用程序,我得到错误。需要帮助运行我的Spring启动应用程序。 错误信息:白标签错误页 此应用程序没有/error的显式映射,因此您将其视为回退。 2016年10月10日星期一10:39:54 WAT出现意外错误(类型=未找到,状态=404)。没有可用的消息 代码: