我正在將我的 log4j 配置從 PatternLayout 切換到 JasonLayout。更改后,我開始出現以下錯誤:
ERROR Could not create plugin of type class org.apache.logging.log4j.core.layout.JsonLayout for element JsonLayout: java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/FilterProvider java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ser/FilterProvider
at org.apache.logging.log4j.core.layout.JsonLayout.<init>(JsonLayout.java:159)
at org.apache.logging.log4j.core.layout.JsonLayout.<init>(JsonLayout.java:71)
at org.apache.logging.log4j.core.layout.JsonLayout$Builder.build(JsonLayout.java:103)
at org.apache.logging.log4j.core.layout.JsonLayout$Builder.build(JsonLayout.java:79)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:124)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1138)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1063)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1055)
at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1055)
at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:664)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:258)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:304)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:621)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:694)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:711)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)
at de.ic_consult.planetarium.listener.ListenerEmbedded.<clinit>(ListenerEmbedded.java:49)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ser.FilterProvider
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 21 more
這個類來自 jackson-databind,在我的例子中,它是 2.13.1 版本,它來自log4j 2.17.2的依賴項。我正在使用 gradle 來管理依賴項,而 log4j 依賴項來自一個內部框架,其中我看到 log4j 被加載為:
implementation('org.apache.logging.log4j:log4j-api')
runtimeOnly('org.apache.logging.log4j:log4j-core')
runtimeOnly('org.apache.logging.log4j:log4j-jcl')
難道是我將 log4j-core 和 logj4-jcl 作為 runtimeOnly 加載的事實導致了這個問題嗎?
uj5u.com熱心網友回復:
jackson-databind是 的可選依賴項log4j-core。基本上這意味著如果你想包含它,你必須將它明確宣告為對你的專案的依賴(參見Maven 可選依賴項)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/509880.html
標籤:爪哇毕业典礼日志4jnoclassdeffound错误
上一篇:找不到插件:“com.google.gms.google-services”
下一篇:任務:react-native-gradle-plugin:compileKotlinFAILED,“compileJava”任務(當前目標是1.8)和“compileKotlin”任務(當前目標是1
