Spring Bootのトラブルシューティングメモ

  • No qualifying bean of type...
    ・注入対象クラスが@SpringBootApplicationのついたアプリケーションクラスのパッケージ階層の外部にある。
  • No static resource ***
    ・これも同じです。"/***" のRequestMapping/PostMappingを持つControllerクラスが、 @SpringBootApplicationのついたアプリケーションクラスのパッケージ階層の外部にあると、 そのControllerは見つけられないので、静的文書 ***.html を探しに行こうとしてこのエラーになります。
  • a th:href=のリンクが有効にならない
    ・th:hrefはThymeleafの属性なので、HTMLファイルをtemplatesに置かないと有効になりません。 staticに置いているとリンクに整形されません。
  • プロパティ変数が注入されない(コンテナ管理対象にならない)
    ・使う側のクラスに @RequiredArgsConstructor を書いていない。
    ・プロパティ変数がfinalになっていない。
    ・注入されるクラスに @Component、@Service などを書いていない。
  • 値がセッションに保存されない
    ・Controllerクラスに @SessionAttributes(value={"..."}, types={....class})を書いていない。
    ・Controllerクラスで @ModelAttribute("...Form") を付けて空のオブジェクトを返す初期化メソッドを書いていない。
    ・セッション属性名とクラス名が異なる場合に、@ModelAttribute("...Form") をメソッドの引数に付けていない。
  • @Validを含むメソッドでMethodArgumentNotValidException
    BindingResult引数は、@Validを指定した引数の直後に置く必要がある。 直後ではない位置に置いた場合はこの謎のエラーの原因になります。
  • 他クラスを継承したクラスにLombokの@Dataを使うとSTSに次のような警告が出る:
    Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object...

    @EqualsAndHashCode(callSuper = {trueかfalse(デフォルト)}) を明示的に指定すべきです。callSuper=trueはスーパークラスのequals()を参照する (従って、スーパークラスのフィールドが比較対象になる)ことを、 falseはスーパークラスのフィールドを比較対象にしないことを指示します。 従ってほとんどの場合、Object以外のクラスを継承したならばtrueを指定することになるでしょう。
  • The type javax.servlet.http.HttpServletResponse cannot be resolved.It is indirectly referenced from required .class files
    Spring Boot3はJakartaEEに移行済なので、javax.servletのクラスは参照できません。 javax時代に作った共通ライブラリを使おうとしても無理なので、jakarta.servlet版を作るしかない。
  • Cannot find a Java installation on your machine matching this tasks requirements: {languageVersion=**,...
    build.gradleで指定したバージョンのJavaが開発機に入っていない。 バージョンは高ければいいという物でもないらしいので、選択したのと同じバージョンの物を入れる必要があります。
    インストールしたら、コマンドプロンプトでjava -versionと打ってそのバージョンが出ることを確認し、 環境変数JAVA_HOMEにインストール先を指定してSTSを起動、build.gradleを右クリック⇒Gradle⇒Refresh Gradle Projectを実行します。

Java kowaza Top

(first uploaded 2025/03/29 last updated 2026/01/27, URANO398)