コンパイルエラーの切り分け
最初のエラーから見る
エラーが多数出ても、後のエラーは最初のエラーから派生していることがあります。compile-after.txt を開き、最初の COMPILATION ERROR や cannot find symbol から順に確かめます。
原因の切り分け
| 症状 | 考えられる原因 | 確かめ方 | 直し方 |
|---|---|---|---|
cannot find symbol・package does not exist |
使っているクラス・メソッドが更新先で消えた | バージョンページの付録の「消えた」一覧にあるか | バージョンページのカード、公式の移行ガイド、Javadoc で移行先を確かめて書き換える |
method does not override or implement・name clash |
継承・実装しているライブラリのクラスの定義が変わった | 更新先の Javadoc で親クラス・インターフェースを見る | オーバーライドするメソッドの引数・戻り値・例外宣言を合わせる |
javax.… が見つからない |
名前空間の移行(javax → jakarta)がある |
バージョンページの「import を機械的に置き換える」 | import の一括置き換え(javax → jakarta) |
| 同じクラスが2か所から読み込まれる・型が合わない | 新旧のバージョン、または新旧の座標が混在している | dependency-tree-after-all.txt で対象を検索する |
古いバージョン・古い座標を依存定義から外す。手で置いた JAR も確かめる |
| 依存しているはずのクラスが無い | 分割された成果物の一部が足りない | バージョンページの「関連モジュール」 | 足りない成果物を同じバージョンで足す。使わないものは推測で足さない |
| 推移的依存のバージョンの競合 | ほかのライブラリが別のバージョンを要求している | 依存ツリーの差分 | 管理元(親 POM・BOM・dependencyManagement)で互換性のあるバージョンにそろえる。原因を確かめずに exclusions を足さない |
UnsupportedClassVersionError・class file has wrong version |
Java のバージョンが足りない | java -version・mvn -version・Eclipse の JRE を比べる |
バージョンページの「必要な Java」以上にそろえる |
| Eclipse とコマンドで結果が違う | IDE の情報が古い | Problems ビューとコマンドの結果を比べる | IDE への反映のあと、「プロジェクト」→「クリーン」 |
取得できない(404・401・403・cached failure) |
社内リポジトリに未登録、認証の問題 | Maven・Gradle のログ | 登録担当者に依頼する。登録後に限り -U(Gradle は --refresh-dependencies)で取り直す |
直したあと
- IDE への反映を行う
- 解決されたバージョンの確認のコンパイルをやり直す
- テストを流す(ビルド・テスト・WAR の確認)
解決しない場合は、確かめた結果と行った対応を記録し、担当者・レビュー者に相談します。