# Talend StudioでJavaを設定

Talend Studioの内部Javaフィールドやメソッドにジョブがアクセスすることを許可するかどうかを設定できます。

## 手順

1. Talend Studioのメインウィンドウのツールバーで![\[Project settings\] (プロジェクト設定)](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/projectsettings.svg)をクリックするか、メニューバーで[File] (ファイル) &gt; [Edit Project Properties] (プロジェクトプロパティを編集)とクリックして[Project Settings] (プロジェクト設定)ダイアログボックスを開きます。
2. Buildノードを展開し、[Java Version] (Javaバージョン)をクリックして、該当するビューを開きます。

   ![\[プロジェクト設定\]ダイアログボックス内の\[Javaバージョン\]設定。](https://help.qlik.com/talend/ja-JP/studio-user-guide/Resources/images/studio-project-settings-java-version.png)

   [JDK Compiler compliance level] (JDKコンパイラーのコンプライアンスレベル)ドロップダウンリストで、Talend StudioのJDKコンパイラーのコンプライアンスレベルが1.8であることを確認できます。

   コンパイラーのコンプライアンスレベルは、ジョブコードの生成に使用したJavaバージョンに対応します。コンパイラーのコンプライアンスレベルの互換性については、[互換性があるJava環境](https://help.qlik.com/talend/r/ja-JP/Cloud/installation-guide-windows/compatible-java-environments)をご覧ください。
3. [Enable Java 17 compatibility] (Java 17との互換性を有効化)チェックボックスをオンにします。

   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で実行することはできません。
4. [Apply and Close] (適用して閉じる)をクリックして変更を適用し、ダイアログボックスを閉じます。