Java 17との互換性があれば、Javaの不正な反射アクセス操作のエラーが防止されるほか、どのジョブについてもその実行に必要なJavaの依存項目が確保されます。
[Module access settings] (モジュールアクセスの設定)エリアでは、Talendコンポーネント、Talend Component Kitフレームワーク、Big DataディストリビューションのJava内部モジュールが[Default] (デフォルト)タブに設定されます。[Custom] (カスタム)タブでは、カスタムコンポーネントのJava内部モジュールと、すべてのジョブとルートのグローバルなJava内部モジュールを設定できます。
[Allow Jobs to access internal Java fields and methods if required] (必要であればジョブに内部のJavaフィールドとメソッドへのアクセスを許可)オプションを選択すれば、ジョブがJava 11またはJava 17でそれぞれ実行された時に発生するJVM警告と致命的エラーの数を削減できます。
このパラメーターを追加しない場合に発生するエラーの例:
Caused by: java.lang.reflect.InaccessibleObjectException: 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 @121f97fb
有効になると、Talend Studioでビルドされたジョブで、job.shまたはjob.batというスクリプトファイルに--add-opensパラメーターが次のように追加されます。
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opensパラメーターはまた、独立したものとして設定されているすべての
tRunJobに対してJavaコマンドで追加されます。その結果、これらの新しいパラメーターがJVMに渡されるよう、ジョブをすべて再ビルドする必要があります。再ビルドしないと、これらのパラメーターは欠落し、独立したサブジョブが含まれているジョブは実行時に失敗します。
この方法でビルドされたジョブをJava 8で実行することはできません。