当 spring-boot 运行时 IntelliJ 进程以退出代码 0 完成
Posted
技术标签:
【中文标题】当 spring-boot 运行时 IntelliJ 进程以退出代码 0 完成【英文标题】:IntelliJ Process finished with exit code 0 when spring-boot run 【发布时间】:2015-12-21 22:01:27 【问题描述】:从 IntelliJ-Idea 启动 spring-boot 应用程序时遇到问题。通过终端运行应用程序时我没有这个问题。
:: Spring Boot :: (v1.2.1.RELEASE)
2015-09-24 12:22:44.274 WARN 22380 --- [ main] n.sf.ehcache.config.CacheConfiguration : Cache 'publicationsCount' is set to eternal but also has TTI/TTL set. To avoid this warning, clean up the config removing conflicting values of eternal, TTI and TTL. Effective configuration for Cache 'publicationsCount' will be eternal='true', timeToIdleSeconds='0', timeToLiveSeconds='0'.
Process finished with exit code 0
我认为这个警告不会导致它。可能是什么原因?
【问题讨论】:
退出代码 0 表示,应用程序没有错误地结束。那么问题出在哪里? 但它不应该关闭。 Spring-boot 应该等待运行,等待请求。 仅当您在应用程序中包含了一个您未指定的 Web 服务器时。所以如果您需要更多帮助,您应该发布相关配置。 一个愚蠢的原因可能是SpringApplication.run()
中的错误类
【参考方案1】:
删除 provided 范围的 spring-boot-starter-tomcat 依赖对我有帮助。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
【讨论】:
谢谢,我删除了我的 gradle 等效项:providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
这行得通。但是你能告诉我为什么这会奏效吗?是不是因为“提供”意味着它只在编译期间可用?。【参考方案2】:
我从https://start.spring.io/ (sprint initializr) 创建了一个简单的项目,并添加了一个简单的控制器来运行应用程序。
@RestController
public class testController
@GetMapping(value="/")
//@RequestMapping(value="/",method=RequestMethod.GET)
public String hello()
return "Hello World!!";
但它没有开始,因为我的 pom 没有
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
添加后我的应用程序开始了......
2019-11-05 14:33:32.302 INFO 39079 --- [ main] o.s.s.web.DefaultSecurityFilterChain : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@dd20ebc, org.springframework.security.web.context.SecurityContextPersistenceFilter@57b1ec84, org.springframework.security.web.header.HeaderWriterFilter@2c2a7d53, org.springframework.security.web.csrf.CsrfFilter@b9b97ad, org.springframework.security.web.authentication.logout.LogoutFilter@29f3185c, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@4ffa7041, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@2c2a903f, org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter@6c70b7c3, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@48d44b46, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@5cbe95b1, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@11ad095c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@16a09809, org.springframework.security.web.session.SessionManagementFilter@1de85972, org.springframework.security.web.access.ExceptionTranslationFilter@4a122e68, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@5d37aa0f]
2019-11-05 14:33:32.392 INFO 39079 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2019-11-05 14:33:32.398 INFO 39079 --- [ main] eModelDeploymentServiceParentApplication : Started ServiceModelDeploymentServiceParentApplication in 5.727 seconds (JVM running for 6.778)
这是我的 pom 依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
注意:您可能不需要上述所有依赖项。
【讨论】:
添加 spring-boot-starter-web 依赖解决了我的问题【参考方案3】:在 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>test</scope>
</dependency>
【讨论】:
【参考方案4】:添加 spring boot starter web 解决了我的问题
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
【讨论】:
【参考方案5】:在我的情况下,我开始使用 intelliJ
管理员
,然后就可以了 确保你有tomcat依赖
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.29</version>
</dependency>
【讨论】:
【参考方案6】:就我而言,两者之间存在细微差别:
只需在 IntelliJ 内部最明显的底部单击“运行”,然后... 在 src/main/java/com.exampler.yourapplication 中查找默认控制器,右键单击并在此处按运行。第二个选项只是正常运行项目。
【讨论】:
谢谢,第二个解决方案对我不起作用。但至少它显示了不同的错误......【参考方案7】:如果你从https://start.spring.io/(sprint initializr)创建一个项目gradle
模板,你需要在你的build.gradle文件中添加org.springframework.boot:spring-boot-starter-web
dependecy。
// you need to add this dependency to run spring boot correctly
implementation 'org.springframework.boot:spring-boot-starter-web'
【讨论】:
【参考方案8】:如果将以下属性添加到 allication.properties 文件中,则需要将其删除。 此属性用于移除 Web 容器。
spring.main.web-application-type=none
在我的情况下,我忘了删除它,一旦它被删除,问题就解决了
【讨论】:
【参考方案9】:在 pom.xml 中使用以下依赖项,以及加载 maven 更改(ctrl+shift+o)解决了我的问题。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
【讨论】:
以上是关于当 spring-boot 运行时 IntelliJ 进程以退出代码 0 完成的主要内容,如果未能解决你的问题,请参考以下文章
Heroku H14(没有运行 Web 进程)+ Spring-boot
当 logging.config 指向 logfj2 外部配置文件的错误文件位置时,spring-boot 应用程序停止
未能执行目标 org.springframework.boot:spring-boot-..:2.1.8。运行时发生异常。空值
当加载 spring-boot 和 spring-data-jpa 时,Hibernate 无法加载 JPA 2.1 Converter
我的 spring-boot 2.x 项目出现运行时错误(java.lang.AbstractMethodError),如以下消息