コンパイルエラーの切り分け

最初のエラーから見る

エラーが多数出ても、後のエラーは最初のエラーから派生していることがあります。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)で取り直す

直したあと

  1. IDE への反映を行う
  2. 解決されたバージョンの確認のコンパイルをやり直す
  3. テストを流す(ビルド・テスト・WAR の確認)

解決しない場合は、確かめた結果と行った対応を記録し、担当者・レビュー者に相談します。

共通手順書の章

  1. 作業の全体像
  2. 開発環境と前提
  3. 作業前の準備
  4. 更新前の記録
  5. 利用箇所の調べ方
  6. 依存定義の更新
  7. IDE への反映
  8. 解決されたバージョンの確認
  9. コンパイルエラーの切り分け
  10. import の一括置き換え(javax → jakarta)
  11. 非推奨の警告の扱い
  12. 概算工数の出し方
  13. リソースの解放と入力の安全性
  14. ビルド・テスト・WAR の確認
  15. 他の JAR に同梱された複製
  16. 再スキャン
  17. 変更差分の確認と完了条件
  18. ロールバックと作業記録
  19. 検証環境等への配備