コトの発端
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
にしておくように
めんどいね
うん。