IT初学者部

プログラミングに関することを中心に、備忘録として残していきます。

VSCodeでSpringbootアプリケーションが勝手に終了してしまう

はじめに

VSCodeでSpringbootアプリケーションの開発をするようにしているんですが、アプリケーション起動時に起動したままになっていてほしいのになぜか終了してしまう(エラーになるわけではない)ので、調べた解決法を一応載せておきます。

状態

  • java 17, springframework 2.7.5、GradleでビルドしているSpringbootプロジェクト。
  • VSCodeにはJava Extention Pack、Springboot Extention Pacl, Gradle for Javaなどインストール済み。
  • 他アプリなどは問題なく実行できる

事象

Springbootアプリケーションを起動すると、エラーなどが発生するわけではなく、コマンド表示がイカのようにされたまま終了してしまう。

10:06:58.626 [Thread-0] DEBUG org.springframework.boot.devtools.restart.classloader.RestartClassLoader - Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@35bbbcb9

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

2022-10-30 10:06:58.841  INFO 51660 --- [  restartedMain] com.hirm159.ika3api.Ika3ApiApplication   : No active profile set, falling back to 1 default profile: "default"
2022-10-30 10:06:58.870  INFO 51660 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2022-10-30 10:06:59.130  INFO 51660 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2022-10-30 10:06:59.131  INFO 51660 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode.
2022-10-30 10:06:59.138  INFO 51660 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 4 ms. Found 0 JDBC repository interfaces.
2022-10-30 10:06:59.153  INFO 51660 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode
2022-10-30 10:06:59.155  INFO 51660 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2022-10-30 10:06:59.161  INFO 51660 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1 ms. Found 0 JPA repository interfaces.
2022-10-30 10:06:59.382  INFO 51660 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-10-30 10:06:59.586  INFO 51660 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-10-30 10:06:59.764  INFO 51660 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2022-10-30 10:06:59.840  INFO 51660 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.6.12.Final
2022-10-30 10:06:59.985  INFO 51660 --- [  restartedMain] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2022-10-30 10:07:00.109  INFO 51660 --- [  restartedMain] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL10Dialect
2022-10-30 10:07:00.224  INFO 51660 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2022-10-30 10:07:00.237  INFO 51660 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2022-10-30 10:07:00.481  INFO 51660 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2022-10-30 10:07:00.506  INFO 51660 --- [  restartedMain] com.hirm159.ika3api.Ika3ApiApplication   : Started Ika3ApiApplication in 1.872 seconds (JVM running for 2.319)
2022-10-30 10:07:00.506  INFO 51660 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2022-10-30 10:07:00.506  INFO 51660 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2022-10-30 10:07:00.506  INFO 51660 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
2022-10-30 10:07:00.506  INFO 51660 --- [  restartedMain] com.hirm159.ika3api.Ika3ApiApplication   : Started Ika3ApiApplication in 1.872 seconds (JVM running for 2.319)

これがあるので、少なくとも起動自体はしている様子。起動できない、とかで調べるとビルドエラーだったりなんだったりが出てくるので、Google先生もあまりあてにならない。。。

2022-10-30 10:07:00.506  INFO 51660 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2022-10-30 10:07:00.506  INFO 51660 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2022-10-30 10:07:00.506  INFO 51660 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

これは終了時などに表示されるもの。なので、勝手に終了されている? 同じようなSpringbootアプリケーションをVSCodeの同じ環境で実施している場合は問題なく起動し続けているため、プロジェクトの問題かと思って調べました。

ついでに、すぐに起動後に終了するとかそんなんで調べてみる。

出てきたサイト様

Spring Bootを起動させてもすぐにShutdownしてしまう場合にやること - プログラマーの調べ物

同じような現象について記載しているブログ記事を発見。

stackoverflowにもいくつかこの現象についてのスレッドがある模様。

stackoverflow.com

stackoverflow.com

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

依存関係にspring-boot-starter-webと入れろという回答がほとんどでした。

Gradleでビルドしている場合の記載の仕方は以下のような感じです。

build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

依存関係に追加してから再度実行してみると、起動できるらしいです。

追加済みなのに起動が終了してしまう

それでも私のケースでは起動してもすぐに終了してしまいました。こうなるともはやお手上げです。調べても出てきません。どこかの質問サイトにでも投稿しようかな。。。と思っていた矢先、以下の手順を実行することで無事に解決することができました。

  1. VSCodeを開き、ワークスペースから起動してもすぐに終了してしまうSpringbootプロジェクトを削除する。
  2. 再度、プロジェクトのフォルダをワークスペースに追加する。
  3. 起動してみる

この手順を踏むと解決でき、無事に起動状態を維持できるようになりました。

おわりに

基本に帰ってやり直して見るみたいなことの大切さがわかりましたね、これでも解決できなかった場合は本当にお手上げですが。。。