【问题标题】:Spring Boot 2.4.3 application immediately shuts down after startingSpring Boot 2.4.3 应用启动后立即关闭
【发布时间】:2021-03-18 01:48:02
【问题描述】:

工具:

  • Sprint 启动 2.4.3
  • IntelliJ IDEA 2020.3.3 社区版
  • Java 15.0.2

我只是用Spring Assistant创建了一个demo项目,打开Spring Web依赖,pom.xml也有

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

当我运行DemoApplication.java时,应用程序在启动后立即关闭,不打印任何有关服务器或端口的信息:

2021-03-18 09:17:38.398  INFO 8553 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 15.0.2 on Summoring-MBP.local with PID 8553 (/Users/Smeegol/Git/demo2/target/classes started by Smeegol in /Users/Smeegol/Git/demo2)
2021-03-18 09:17:38.403  INFO 8553 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2021-03-18 09:17:40.286  INFO 8553 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 3.424 seconds (JVM running for 4.374)

Process finished with exit code 0

如何在应用程序启动后使 Web 服务器运行并监听 8080 端口?谢谢。

源码可以从这里下载:https://github.com/Smeegol/SpringBootDemo/blob/main/demo.zip

【问题讨论】:

  • 你定义了控制器吗?我对 Spring Assistant 不熟悉,但 Spring Initializr 默认会给你一个。
  • 它在哪里关闭?我没有看到任何错误!
  • 请使用“debug=true”查看所有日志。它可能显示应用程序关闭的原因并将端口从默认端口更改。我知道应用程序会出现一段时间,因此端口可能不会是问题。但是我复制了我这边的场景但没有发现问题。控制器不需要保持应用程序运行。如果问题仍然存在,请更改 jdk。
  • @chrylis-cautiouslyoptimistic- 我创建了一个新控制器,但没有任何意义。源码已上传到GitHub
  • @MaruthiAdithya 但是没有日志表明 Web 服务器正在运行或正在监听 8080 这样的端口,它只是运行正常并立即以代码 0 退出

标签: java spring spring-boot


【解决方案1】:

您的代码有效。我没有 Java 15,我已将其更改为使用 11 并且它可以运行。

这是我得到的:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.4.3)

2021-03-17 23:15:01.495  INFO 34616 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 11.0.3 on machine1.domain.com with PID 34616 (/Users/test/Downloads/demo 5/out/production/demo started by test in /Users/test/Downloads/demo 5)
2021-03-17 23:15:01.497  INFO 34616 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2021-03-17 23:15:02.192  INFO 34616 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2021-03-17 23:15:02.199  INFO 34616 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2021-03-17 23:15:02.199  INFO 34616 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.43]
2021-03-17 23:15:02.251  INFO 34616 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2021-03-17 23:15:02.251  INFO 34616 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 711 ms
2021-03-17 23:15:02.362  INFO 34616 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2021-03-17 23:15:02.495  INFO 34616 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-03-17 23:15:02.508  INFO 34616 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 1.249 seconds (JVM running for 1.977)

JDK 15 可能“太新”了。如果您只是在试验,请将 JDK 降级到较低的版本。 Java 11 有长期支持。

【讨论】:

  • 当我将JDK降低到11时,问题仍然存在。可惜:(
  • 对不起,我将JDK降低到11的方法是错误的。当我更改为 Amazon Corretto JDK 11 时,项目按预期运行!
  • 只是好奇,您为什么使用那个 Amazon JDK?采用 Open JDK 不是最好的吗?
  • 是的,采用 Open JDK 是最好的。我不熟悉这些 JDK 之间的区别,因为十年来没有开发 Java :(
【解决方案2】:

这种情况发生在你的源代码中没有监听任何 API 时,这意味着你的源代码中没有任何标有 @RestController 或 @Controller 匿名的类,此时 SpringBoot 只是简单地构建源代码运行并退出而不返回任何错误消息

【讨论】:

  • 我在 github 上浏览了您的源代码,发现存在 HelloController 类。你确定你用来运行的和你发布到github的是一样的吗
  • 是的,我敢肯定,它们完全一样
  • @Smeegol 我不知道是什么原因,但是您的代码在我的机器上运行,一切正常
  • @Smeegol 我认为问题可能来自您的 IDE,您尝试找到一种方法从您的 IDE 刷新或重新加载项目,或者只是尝试打开终端并运行 mvn spring-boot: run
  • 没有任何控制器的 SpringBoot 应用程序无论如何都会启动并监听端口。
猜你喜欢
  • 2017-01-14
  • 2014-08-04
  • 2018-12-08
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多