katakata1212
@katakata1212

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Javaのプログラム実行につまづいています

解決したいこと

Spring Boot App実行時エラーの解決

eclipse IDE(pleiades 2023)でJavaのコード課題に取り組んでいます。
localhost:8080で占い結果を表示させています。

発生している問題・エラー

ブラウザに正しく表示されているのを確認した後、テキストに振り返り用のコメントを追加しました。
すべてコメントアウトして、処理文には影響を与えていないと思うのですがその後の実行時エラーになってしまいます。何故なのでしょうか。

スクリーンショット 2023-07-22 211529.png
スクリーンショット 2023-07-22 211724.png

自分で試したこと

・全てコメントアウトされているか確認
・赤アンダー線(記述間違いの指摘)の確認
・デバッグ実行を試してみた
・パッケージを複製し、クラスやhtmlファイルを複製し実行させてみた

0

2Answer

1枚目の画像
APPLICATION FAILED TO START以下についてはどんなことを試されたでしょうか。
(自分で試したこと、には無かったので。。)

以下2点は、それぞれ内容を把握する必要があります。

  • DescriptionPort 8080 was already in useのエラー文の意味
  • Action:Descriptionのエラー解決にどんな指示が与えられているか

Eclipse上で、
一度サーバーを起動した状態で、再度で同じポートを使ってサーバーを起動しているのでエラーが発生しています。

現在のエラーを解決するためには、
一度サーバを停止した上で、再度サーバを起動する必要があります。

また、「コード修正→サーバ停止→サーバ起動」を繰り返すのは大変なので、
Spring Dev Toolsを使うことをおすすめします。
Spring Dev Toolsの導入(記述)方法について、mavenとgradleで異なるので、以下サイト等で確認してみてください。

6.8. Developer Tools
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.devtools

3Like

Comments

  1. @katakata1212

    Questioner

    エラー時に表示される Description: Action:の意味を初めて知りました! Actionメッセージに解決策が記述されているのですね。ありがとうございます!

いくつかの注意すべき問題があります。

アプリケーションの起動に失敗

Spring Bootアプリケーションが起動すると、デフォルトで8080ポートが使用されます。アプリケーションを単に起動したい場合は、設定ファイルを変更してください。もしくは、8080ポートを使用したいと考えている場合は、まずどのアプリケーションがポートを使用しているかを確認してください。Linuxでポート8080を使用しているアプリケーションを調べるには、lsof(List Open Files)コマンドを-iオプションとともに使用します。このコマンドは、オープンされているファイルとそれらを使用しているプロセス、ネットワーク接続などに関する情報を表示します。以下のように実行します:

ターミナルを開き、次のコマンドを管理者権限で実行します(rootユーザーまたはsudoを使用):

sudo lsof -i :8080

このコマンドにより、ポート8080を使用しているプロセスの情報が表示されます。プロセスID(PID)、プロセスを実行しているユーザー、プロセス名などが表示されます。

スタンドアロンアプリケーションの停止:
アプリケーションがシステムサービスで管理されていないスタンドアロンプロセスであれば、killコマンドを使用して停止できます。まず、lsofコマンドを使用してアプリケーションのプロセスID(PID)を見つけます。それから、killコマンドを使用してプロセスを停止します:

sudo kill PID

input.html

"error resolving template [input.html], template might not exist or might not be accessible by any of the configured Template Resolvers"というエラーメッセージは、Spring Bootがブラウザで表示するためにテンプレートファイル「input.html」を見つけられないことを示しています。この問題は、一般的にテンプレートの設定とファイルの場所に関連しています。

テンプレートの場所

Spring Bootプロジェクト内の適切な場所に「input.html」という名前のテンプレートファイルが配置されていることを確認してください。デフォルトでは、Spring Bootは「src/main/resources/templates」ディレクトリ内をテンプレートの場所として探します。したがって、「input.html」ファイルが適切なディレクトリに配置されていることを確認してください。

テンプレートエンジンの依存関係

Spring Bootプロジェクトに必要なテンプレートエンジンの依存関係があることを確認してください。Thymeleafを使用する場合は、pom.xmlまたはbuild.gradleファイルにThymeleafのスターター依存関係が含まれている必要があります。

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

コントローラー内のテンプレート名

もし「input.html」テンプレートをレンダリングするためにコントローラを使用している場合は、@RequestMappingまたは@GetMappingアノテーションの中でテンプレート名が正しく指定されていることを確認してください。例えば:

@Controller
public class MyController {
    @GetMapping("/input")
    public String getInputPage() {
        return "input"; 
    }
}
1Like

Comments

  1. @katakata1212

    Questioner

    とても丁寧な回答ありがとうございます。今はまだ分からない点も多くありますが、1つずつ調べている途中で 実行→Maven clean→Maven install を試したところ問題なくブラウザ表示されるようになりました。ありがとうございました!

  2. 問題が解決したのであれば、クローズにするといいですよ。

Your answer might help someone💌