首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型YAMLFactory不能赋值给JsonFactory

类型YAMLFactory不能赋值给JsonFactory
EN

Stack Overflow用户
提问于 2021-11-08 14:59:17
回答 1查看 65关注 0票数 0

在Tomcat8中运行spring boot 2.4.0应用程序时遇到启动问题。Spring-boot-starter-log4j2 2.4.0加载log4j 2.13.3。这个问题只有在作为web应用程序运行时才会重现,当我从命令行运行相同的代码时,一切都使用相同的库版本和配置。我使用的是自定义的yaml配置文件。你知道为什么会发生这个错误吗?

代码语言:javascript
复制
14:43:28.769 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    org/apache/logging/log4j/core/config/yaml/YamlConfiguration.getObjectMapper()Lcom/fasterxml/jackson/databind/ObjectMapper; @11: invokespecial
  Reason:
    Type 'com/fasterxml/jackson/dataformat/yaml/YAMLFactory' (current frame, stack[2]) is not assignable to 'com/fasterxml/jackson/core/JsonFactory'
  Current Frame:
    bci: @11
    flags: { }
    locals: { 'org/apache/logging/log4j/core/config/yaml/YamlConfiguration' }
    stack: { uninitialized 0, uninitialized 0, 'com/fasterxml/jackson/dataformat/yaml/YAMLFactory' }
  Bytecode:
    0x0000000: bb00 0259 bb00 0359 b700 04b7 0005 b200
    0x0000010: 0604 b600 07b0                         

    at org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory.getConfiguration(YamlConfigurationFactory.java:66) ~[log4j-core-2.13.3.jar:2.13.3]
    at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:572) ~[log4j-core-2.13.3.jar:2.13.3]
    at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.loadConfiguration(Log4J2LoggingSystem.java:190) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.loadConfiguration(Log4J2LoggingSystem.java:181) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:57) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.initialize(Log4J2LoggingSystem.java:163) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:315) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:281) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:203) ~[spring-context-5.3.1.jar:5.3.1]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:196) ~[spring-context-5.3.1.jar:5.3.1]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:170) ~[spring-context-5.3.1.jar:5.3.1]
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:148) ~[spring-context-5.3.1.jar:5.3.1]
    at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.SpringApplicationRunListeners$$Lambda$298/25722050.accept(Unknown Source) ~[?:?]
    at java.util.ArrayList.forEach(ArrayList.java:1249) ~[?:1.8.0_41]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:362) [spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) [spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:173) [spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:153) [spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:95) [spring-boot-2.4.0.jar:2.4.0]
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174) [spring-web-5.3.1.jar:5.3.1]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161) [catalina.jar:9.0.45]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.45]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717) [catalina.jar:9.0.45]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690) [catalina.jar:9.0.45]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:706) [catalina.jar:9.0.45]
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1023) [catalina.jar:9.0.45]
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1903) [catalina.jar:9.0.45]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_41]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_41]
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.45]
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) [?:1.8.0_41]
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:824) [catalina.jar:9.0.45]
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474) [catalina.jar:9.0.45]
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1611) [catalina.jar:9.0.45]
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:319) [catalina.jar:9.0.45]
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) [catalina.jar:9.0.45]
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) [catalina.jar:9.0.45]
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) [catalina.jar:9.0.45]
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:936) [catalina.jar:9.0.45]
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:843) [catalina.jar:9.0.45]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.45]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384) [catalina.jar:9.0.45]
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374) [catalina.jar:9.0.45]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_41]
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.45]
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [?:1.8.0_41]
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) [catalina.jar:9.0.45]
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) [catalina.jar:9.0.45]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.45]
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:433) [catalina.jar:9.0.45]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.45]
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) [catalina.jar:9.0.45]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina.jar:9.0.45]
    at org.apache.catalina.startup.Catalina.start(Catalina.java:772) [catalina.jar:9.0.45]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_41]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_41]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_41]
    at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_41]
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342) [bootstrap.jar:9.0.45]
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) [bootstrap.jar:9.0.45]
EN

回答 1

Stack Overflow用户

发布于 2021-11-08 17:42:09

用于添加的修复

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
</dependency>

失败的方法是

代码语言:javascript
复制
@Override
protected ObjectMapper getObjectMapper() {
    return new ObjectMapper(new YAMLFactory()).configure(JsonParser.Feature.ALLOW_COMMENTS, true);
}

类路径中没有YAMLFactory

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69885579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档