コトの発端
Java 16でMaven使いながらコードを書いていて依存関係を追加する必要があることに気が付いた私はpom.xmlを開いてdependencyを書き加えていた。
その依存関係はrelocationする事を前提としていたので、いつも通りmaven-shade-pluginのバージョン3.2.4を使ってrelocateの処理を書いた。
暫くしてコードを書き終え、ビルドしてみるとなんとエラーが発生!コンソールには
Unsupported class file major version 60
とかいうわけのわからないエラーが出ていた。
結局何が原因だったのさ
使用していた依存関係がJava 16を使用していて、かつmaven-shade-pluginのバージョン3.2.4を使っていたこと、そしてその状態でrelocationをしようとしていたことが原因だと私の中で結論付けた。(そのままやんけ)
解決方法は?
①pom.xmlのjava.versionを16にしておく
<properties>
<java.version>16</java.version>
...
</properties>
②maven-shade-pluginのsnapshotが使えるようにpluginRepositoryを追加する
<pluginRepositories>
<pluginRepository>
<id>maven-snapshots</id>
<url>https://repository.apache.org/content/repositories/snapshots/</url>
</pluginRepository>
</pluginRepositories>
③maven-shade-pluginのversionを3.3.0-SNAPSHOTにする
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.3.0-SNAPSHOT</version>
...
</plugin>
※もちろんIntelliJ側などのプロジェクトSDKはJava 16にしておくように
めんどいね
うん。