問題
既存のSpringBoot
プロジェクトで、ビルドすると「Warning:java: 不明な列挙型定数ですjavax.annotation.meta.When.MAYBE 理由: javax.annotation.meta.Whenのクラス・ファイルが見つかりません」という警告が出る状況でした。
これは以前から出ている警告であり、最小構成で何とか再現できないものかと試しましたが再現できませんでした。
よって、何の依存によってこの警告が出ているのかは確認していません。
原因
mvn dependency:tree
して調べたところ、javax.annotation
パッケージはspring-boot-starter-tomcat
によって追加されていましたが、その中にはmeta
パッケージが含まれておらず、当然javax.annotation.meta.When
も定義されていませんでした。
対処法
要するにjavax.annotation.meta.When
が定義されていれば良いので、それを含む依存を持ってくれば解決します。
調べた限り一番手軽な方法は、以下リポジトリよりFindBugs JSR305
を持ってくる事でした。
補足
javax.annotation
リポジトリにはjsr305
という名前のライブラリが存在します(記事執筆時点ではバージョン0.1と1.0が存在)。
ただ、こちらのリポジトリは、バージョン0.1の方は依存へ正常に追加する方法が分からず、1.0の方は以下のリポジトリを追加しなければ動かないという状況でした。
1.0の方で警告が消えるのは確認しましたが、リポジトリを追加する必要があったり、1.0の最終更新は2014年だったりとちょっと怖い状況だったので、FindBugs JSR305
を持ってくるのが無難だと思います。
<repositories>
<repository>
<id>hippo</id>
<name>Hippo Maven 2</name>
<url>https://maven.onehippo.com/maven2/</url>
</repository>
</repositories>
雑感
ここまで書いておいてなんですが、関係なさそうな物を追加しなければ動かなかったり、FindBugs
は2017年で開発終了していたりと、対処法の方もちょっと不安がある状況なので、実害が無ければこの警告は放置する方が無難という気がします。