解决Spring boot 嵌入的tomcat不启动问题

网友投稿 469 2022-11-18


解决Spring boot 嵌入的tomcat不启动问题

此文章记录一次spring boot通过main 方法启动无法成功的问题

Unregistering JMX-exposed beans on shutdown

问题如下,因为已经解决用的别人的截图但是效果是一样的

百度了一圈都说tomcat没有配置,但实际xml有如下配置

org.springframework.boot

spring-boot-startehttp://r-tomcat

问题:eclipse maven自动下jar包时下载的不全,有部分文件丢失,但是控制台并没有发出任何 classNotFound提示

解决:C:\Users\Administrator\.m2\repository\org\apache\tomcat\embed

讲该目录下的所有文件删除,然后右键项目maven-> update project,

其他同类发现classNotFound也NPRJFRqB可以通过寻找对应jar包在本地仓库位置,使用相同操作进行解决

补充知识:springboot 设置web和非web启动

springBoot区分web和非web项目

老版本:

#server config

#web_environment是否是web项目

spring.main.web_environment=true

#是否加载springboot banner

spring.main.show_banner=false

现版本:

#server config

#是否设定web应用,none-非web,servlet-web应用

spring.main.web-application-type=servlet

#加载springboot banner的方式:off-关闭,console-控制台,log-日志

spring.main.banner-mode=off

WebApplicationType原理:

public SpringApplication(ResourceLoader resourceLoader, Class>... primarySources) {

this.resourceLoader = resourceLoader;

Assert.notNull(primarySources, "PrimarySources must not be null");

this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));

this.webApplicationType = deduceWebApplicationType();

setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));

setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));

this.mainApplicationClass = deduceMainApplicationClass();

}

deduceWebApplicationType()推断当前环境是哪种Web环境(Servlet、Reactive),或者不是Web环境,判断逻辑为Classpath是够有以下类:

存在org.springframework.web.reactive.DispatcherHandler且不存在org.springframework.web.servlet.DispatcherServlet为WebApplicationType.REACTIVE;

同时存在javax.servlet.Servlet、org.springframework.web.context.ConfigurableWebApplicationContext 为WebApplicationType.SERVLET;

否则为 WebApplicationType.NONE

在这里this.webApplicationType = WebApplicationType.SERVLET;

所谓的banner就是控制台打印的一堆线组成的spring


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现ECDSA签名算法
下一篇:Java比较对象大小两种常用方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~