親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

SpringBootを3系にバージョンアップで「シンボル'servlet'を解決できません」エラーが発生

SpringBoot3より発生するエラー

SpringBoot2系からSpringBoot3にバージョンアップした際に発生する代表的なエラーになりますが、「シンボル'servlet'を解決できません」というエラーが発生します。
エラー内容はキャプチャの通り。

SpringBoot3よりJava EEからJakarta EE9へ

SpringBoot2.7までは、SpringFrameworkの5.3をベースにしていましたが、SpringBoot3系以降は、SpringFrameworkは6系をベースとしているようです。
これにより、JavaEEからJakartaEE9へ変更になっているため、パッケージ名の変更が必要になります。
JakartaEE9になるということは、パッケージ名の変更が必要となり、javaxからjakartaに変更することが必要です。
つまりは以下のように変更すれば対応可能です。

変更前

import javax.servlet.ServletException;

変更後

import jakarta.servlet.ServletException;

※ServletExceptionに限らず、「javax.servlet」という記述に対しては全体的に「jakarta.servlet」に変更する必要があります。

javax.validationの変更

javax.validationに対しては、以下のようにjakarta.validationをpom.xmlに追加しないとimportできない場合はありますので注意してください。

<!-- https://mvnrepository.com/artifact/jakarta.validation/jakarta.validation-api -->
<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <version>3.0.2</version>
</dependency>