您的位置:首页 > 编程语言 > Java开发

使用springboot遇到的的异常

2017-02-09 18:35 387 查看
Unregistering JMX-exposed beans on shutdown

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>

把scope删掉就可以了。

MainApplication.java必须位于某个包下

对springboot的依赖必须放在最前面!否则Springboot的内嵌tomcat无法启动!

Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
... 24 common frames omitted


在进行
mvn package
之前,最好
mvn clean
一下,这样就能够删除target目录下的多余jar包。如果不删除多余jar包,有可能会出错。

比如我配置了mybatis,但是没有设置datasource,这样这个应用就启动不了。而mybatis已经下载下来了,这时即便在pom中去掉mybatis,这时运行mvn package得到的war包中还是会包含mybatis,从而导致应用无法启动。

初始化问题

一般情况下,部署在服务器上要使用tomcat,本地调试直接用SpringBoot自带的tomcat

这就需要如下写法

public class MyApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MyApplication.class);
}

public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

ServletInitializer是Servlet初始化器,意思是当本应用作为tomcat的一个webapp时,就调用configure函数,这是tomcat容器调用的,这时整个应用就相当于Servlet。

当作为SpringApplication运行时,会执行main函数,但是不会执行上面的configure函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: