在Tomcat8中运行spring boot 2.4.0应用程序时遇到启动问题。Spring-boot-starter-log4j2 2.4.0加载log4j 2.13.3。这个问题只有在作为web应用程序运行时才会重现,当我从命令行运行相同的代码时,一切都使用相同的库版本和配置。我使用的是自定义的yaml配置文件。你知道为什么会发生这个错误吗?
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]发布于 2021-11-08 17:42:09
用于添加的修复
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
</dependency>失败的方法是
@Override
protected ObjectMapper getObjectMapper() {
return new ObjectMapper(new YAMLFactory()).configure(JsonParser.Feature.ALLOW_COMMENTS, true);
}类路径中没有YAMLFactory
https://stackoverflow.com/questions/69885579
复制相似问题