spring-boot - Spring 服务器不以执行器依赖项启动
问题描述
如果我添加 spring boot 执行器依赖项,我的服务器不会启动。我收到以下错误:
SEVERE [main] org.apache.catalina.startup.HostConfig.deployDescriptor Error deploying deployment descriptor [tomcat path\conf\Catalina\localhost\test.xml]
java.lang.IllegalStateException: Error starting child
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:720)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:692)
...
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/agromarket]]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:717)
... 37 more
Caused by: java.lang.ClassCastException: org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext
at rs.navigator.alexandar.sync.WebAppInitializer.onStartup(WebAppInitializer.java:34)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:174)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
任何想法为什么?据我所知,即使版本不兼容,服务器仍然应该能够启动。
编辑:我的 WebAppInitializer:
public class WebAppInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
System.out.println(("------------------ Sync context initialized and application started ------------------"));
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
// ctx.register(ServletContextListener.class);
// ctx.register(SecurityConfiguration.class);
// ctx.register(SpringFoxConfig.class);
// ctx.register(WebMvcConfigure.class);
// ctx.register(JPAConfiguration.class);
// ctx.setServletContext(servletContext);
// Reconfigure log4j
// ServletContext sctx = ctx.getServletContext();
System.setProperty("logFilename", servletContext.getContextPath().substring(1));
org.apache.logging.log4j.core.LoggerContext sctxLog =
(org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
sctxLog.reconfigure();
//Dispatcher servlet
ServletRegistration.Dynamic servlet = servletContext.addServlet("mvc-dispatcher", new DispatcherServlet(ctx));
servlet.setLoadOnStartup(1);
servlet.addMapping("/");
ctx.close();
}
}
解决方案
如果你想从 Spring Boot 的自动特性中受益,你的@Configuration
类必须用@EnableAutoConfiguration
.
由于自动配置已经创建了一个DispatcherServlet
绑定到/
,您可以安全地将您的WebAppInitializer
类更改为:
@SpringBootApplication
public class WebAppInitializer extends SpringBootServletInitializer {
}
推荐阅读
- java - 如何在 Play-With-Docker-Lab 中指定 java 的文件夹路径?
- c# - 使用自定义构建路径将外部 dll 添加到构建目录
- python-3.x - 如何使用按钮关闭 AIY 语音套件
- c# - 为什么数据目标找不到我的模态ID?
- sql - SQL 喜欢但不喜欢
- ios - 如何确保 iOS 项目中故事板的名称字符串是正确的?
- python - discord python bot - 如何不使用 on_message 发送消息
- python - 如何使用 BeautifulSoup 逐行读取数据?
- c# - 使用 Ifc2x3 获取对象的所有属性
- python - 如何执行 numpy 数组的未排序比较?