Java 我收到“NoClassDefFoundError:org/apache/logging/log4j/util/ReflectionUtil”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/52700803/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
I'm getting "NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil"
提问by hisdudeness
I have the following dependencies in my build.gradle file.
我的 build.gradle 文件中有以下依赖项。
compile 'org.slf4j:slf4j-api:1.7.25'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.1'
On running my unit tests, the following logs are displayed.
在运行我的单元测试时,会显示以下日志。
exclude patterns:SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in
[jar:file:....gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.7/382b070836b8940a02d28c936974db95e9bfc3a4/log4j-slf4j-impl-2.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/z002qz1/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.9.1/a97a849b18b3798c4af1a2ca5b10c66cef17e3a/log4j-slf4j-impl-2.9.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil
at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:42)
at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:358)
I'm using springboot 2.0.4.RELEASE. I'm hoping this is just some sort of version mismatch issue. Any insights are appreciated.
我正在使用 springboot 2.0.4.RELEASE。我希望这只是某种版本不匹配问题。任何见解表示赞赏。
采纳答案by devwebcl
The error: java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil
错误: java.lang.NoClassDefFoundError: org/apache/logging/log4j/util/ReflectionUtil
is because log4j2 since version 2.9.0 has been removed that class from api jar (log4j-api-2.x.x.jar).
是因为自 2.9.0 版以来的 log4j2 已从 api jar (log4j-api-2.xxjar) 中删除了该类。
The last version that has it, is 2.8.2
拥有它的最后一个版本是 2.8.2
Probably you have mixed versions in the classpath.
可能您在类路径中有混合版本。
回答by Strelok
Correct way to configure log4j2 in spring boot is like this:
spring boot中正确配置log4j2的方法是这样的:
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-starter-log4j2'
}
configurations {
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}