今回はJavaのSDKバージョンとIntelliJの関係で少しハマったので記事にしたい。
使用環境
IntelliJ使用 ver 2022/2/3 ver
SDK 21を選択時
OSS参画時に、レビューを依頼されて中身を確認していたら、
ChronoUnitが読み込まない事象が発生。
import java.time.temporal.ChronoUnit;
が読み込まずに、下記
import org.threeten.bp.temporal.ChronoUnit;
が適用されてしまう状態になっていた。
上記の現象は一般的には、
特定の古いJavaバージョン(特にJava 7以前)での日時操作を行うためのライブラリであるThreeTen(ThreeTen Backport)を利用しているから。という点が考えられたが、
最初に記載した通り、SDKのversionは21を選択しており、
特に古い設定を選んでいるわけではなった。
調べてみると、
Java 21 は IntelliJ 2023.1 バージョンではサポートされていません。現在は2023.2.2 リリースからサポートされています。
参考記事
とのことで、単純にIntelliJのverが古くJava21に対応していなかったため、特定のクラスの読み込みができていなかったということのようだった。
また、今回はたまたまChronoUnitだったが、特定のクラスが見つからない状態になるようだ。
そのため、今回の問題に対しての解決策は下記の2点。
1.Java SDK 17に変更をする(JavaSDKバージョンを落とす)
2.IntelliJのverを2023.2.2 リリース以上にあげる
こういう小さい部分ってたまに結構ハマりすよね。
IntelliJのプライベートPCのverの更新は全然していなかったので
(もともとがJava8などで構築していたため問題も生じなかった)
その辺りも盲点になってしまいました。
という記録でした。