Java 17へのTalend Cloudのデプロイ時にビルドが失敗する - 対策法
Java 17に移行した後、アーティファクトをTalend Cloudに公開するためにCIのMavenコマンドを実行すると、次のようなビルドエラーが発生することがあります:
Unable to make field private static volatile java.net.Authenticator
java.net.Authenticator.theAuthenticator accessible: module java.base
does not "opens java.net" to unnamed module XX
これを修正するためには、Mavenスタートアップ設定ファイルに変更をいくつか加える必要があります。
Windowsユーザーの対策法
<Maven_home>/bin/mvn.cmdファイルにこの行を追加します:
set "MAVEN_OPTS=%MAVEN_OPTS% --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/sun.security.x509=ALL-UNNAMED --add-opens=java.base/sun.security.pkcs=ALL-UNNAMED"
変更を保存してビルドを再起動します。
Linuxユーザーの対策法
<Maven_home>\bin\mvnファイルにこの行を追加します:
export MAVEN_OPTS="$MAVEN_OPTS \
--add-opens=java.base/java.net=ALL-UNNAMED \
--add-opens=java.base/sun.security.x509=ALL-UNNAMED \
--add-opens=java.base/sun.security.pkcs=ALL-UNNAMED"
変更を保存してビルドを再起動します。
Jenkins用の回避策
JenkinsサーバーでJava 17を使用している場合は、jenkins_pipeline_simple.zipにあるXMLファイルのTALEND_CI_RUN_CONFIG部分を編集し、これらのパラメーターを追加してください。
変更を保存してビルドを再起動します。