我认为spring-boot-starter-security中的一些模块与log4j冲突,但我不知道哪一个。
我的依赖关系如下:
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework.boot:spring-boot-starter-security"){
exclude module: "spring-boot-starter-logging"
}
compile "org.apache.logging.log4j:log4j-api"
compile "org.apache.logging.log4j:log4j-core"
compile "org.apache.logging.log4j:log4j-slf4j-impl"
compile('org.apache.poi:poi:3.10.1')
compile('org.apache.poi:poi-ooxml:3.10.1')
testCompile("junit:junit")
答案 0 :(得分:9)
我的问题继续:删除Logback或从log4j-slf4j-impl-2.12.0.jar加载的竞争实现类org.apache.logging.slf4j.Log4jLoggerFactory
我添加了
configurations {
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
exclude group: 'ch.qos.logback', module: 'logback-classic'
exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
}
}
到我的gradle.build并用最新版本刷新了所有项目依赖项,并解决了问题。
答案 1 :(得分:8)
我想出了
compile("org.springframework.boot:spring-boot-starter-security"){
exclude module: "spring-boot-starter-logging"
exclude module: "logback-classic"
}
compile("org.springframework.boot:spring-boot-starter-thymeleaf"){
exclude module: "logback-classic"
}
答案 2 :(得分:8)
maven的相同解决方案:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.5.1.RELEASE</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 3 :(得分:4)
使用IDEA&#34;显示依赖关系&#34;或mvn dependency:tree -Dverbose
查找所有logback-classic jar文件,并将其排除。
答案 4 :(得分:0)
对我来说,这个问题仅在执行maven-surefire-plugin期间出现。即使不将Logback添加到项目依赖项中,也不难在类路径上找到Logback。我添加了这样的修复程序:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<systemPropertyVariables>
<org.springframework.boot.logging.LoggingSystem>
org.springframework.boot.logging.log4j2.Log4J2LoggingSystem
</org.springframework.boot.logging.LoggingSystem>
</systemPropertyVariables>
</configuration>
</plugin>
您也可以使用
mvn clean install -Dorg.springframework.boot.logging.LoggingSystem=org.springframework.boot.logging.log4j2.Log4J2LoggingSystem
答案 5 :(得分:0)
根据 this bug 的说法,捆绑且不可删除的 Kotlin 插件(让我想起了 iOS 强制包含 U2 的专辑)包括 org.gradle.kotlin.kotlin-dsl
,这反过来会用不兼容的日志记录库污染类路径(即使已禁用)。
我通过在首选项中将跑步者从“IntelliJ IDEA”更改为“Gradle”解决了这个问题: