一个正确的SpringBoot项目启动后的控制台输出如下图所示(每个人的配置、启动项不一样,控制台的输出会不一样):
这是正常启动的SpringBoot项目。
我遇到的一个SpringBoot项目启动后竟然自动关闭了,启动后的控制台输出是这样的:
可以看到这个项目后自动退出了,可以看最后一行的日志,大意是:
进程已完成,退出代码为0
而且,这个自动退出的项目和上面那个正常启动的项目,都打印出了启动项目花费的时间以及虚拟机运行的时间——最后一个红框中的内容。那这个问题处在哪里呢?
如果单独启动这个自动退出的项目,如果不了解的话,看到这一行信息:
No active profile set, falling back to default profiles: default
我们会以为是这里出了问题,它的意思是:
未设置活动配置文件,返回默认配置文件:默认
实际上,正常启动的项目很多时候也会有这个提示,我们看第一个项目的第二行信息就知道了,它也有这样的提示。这个问题的具体答案请参考:
spring boot profile配置和启动时no active profile set, falling back to default profiles: default的问题
我们按着这篇博文中的描述,在application.properties文件中加上这一行代码:
spring.profiles.active=default
这是第二个自动退出的项目。可以看到,已经没有了关于未设置激活配置文件的提示。同样的,我们也在第一个项目中的application.properties文件中加上这样一句话,再启动后发现也没有了:
No active profile set, falling back to default profiles: default
它们两个都是多出了一句话:
The following profiles are active: default
意思不言自明,就不多说什么了。
那到底是什么原因导致的第二个项目自动后自动退出,或者说自动关闭呢?
我们参照一篇博文试一试解决方案:
按照这一片文章中的介绍,我查看了我的pom文件,发现我的这个项目确实没有添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
我们加上之后,重启项目试一试,结果报错了,报错信息说的是8080端口冲突,已经被占用了,我立马想到是我第一个项目启动的原因,我们将第一个项目关闭(或者在application.properties中修改端口号也行),重新启动第二个项目,我们发现:
很明显,项目启动成功了。
下面我们将spring-boot-starter-web注释掉,然后采用上面博文中所说的第二种方法试一试,添加tomcat:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
然后重启第二个项目,发现还是启动后自动退出。抱着探究到底的心态,我们把第一个项目的spring-boot-starter-web注释掉,然后加上tomcat的依赖试一试,发现竟然启动成功了。为了防止是修改pom后没有编译的原因,我们对导入的jar包重新导入,然后使用maven重新编译项目,结果发现还是启动成功了。这也说明了,上面博文那种方法是可行的。但是为什么我的第二个项目就启动字段关闭了呢?
其实spring-boot-starter-web内嵌了tomcat的,所以启动的时候没有问题,这个我们能理解。我们知道spring-boot-starter-web是一个web项目的依赖,如果我的项目不涉及到web呢?我不需要引入spring-boot-starter-web,只需要一个tomcat就行了,那此时该怎么办呢?
尝试找到原因,最终失败了。不过我想这就是一个项目启动的问题,无关紧要的,我们只需要知道,项目启动肯定是需要容器启动的,比如tomcat,那必然是我在第一个项目的依赖或者其他地方有一些问题,暂时先到这里吧!等找到解决方案的时候再补上。
总结:
遇到“Process finished with exit code 0”问题的解决方案有两种:
一是在pom中添加spring-boot-starter-web依赖,二是在pom中添加spring-boot-starter-tomcat依赖。
第二种在有些项目中可能不能解决问题。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/2736.html