# 为所有 Talend 服务升级 Java

您可以升级 Java 以避免安全问题。此过程将完成 Java 在 Talend 服务上的次要或主要更新所需的不同步骤。对于轻微的降级也可以遵循该过程。

## 开始之前

* 下载并解压 [update_java.zip](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/Content/Resources/attachments/update_java.zip) 文件。根据您的操作系统，使用 .bat 文件或 .sh 文件。
* 在 Windows 上，仅当 Talend 主文件夹中的 utils 文件夹中没有 [sed.zip](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/Content/Resources/attachments/sed.zip) 存档时，才下载此文件。

## 关于此任务

更新Talend所有服务的过程不包括在内Talend Remote Engine，因为此服务需要不同的步骤。有关更多信息，请参阅[更改远程引擎服务的 Java 实例](https://help.qlik.com/talend/en-US/installation-guide-linux/Cloud/java-setup-and-pptimization-for-remote-engine-service#changing-java-instances-for-remote-engine-service)。

升级到另一个主要版本的Java可能需要额外的步骤，以确保您的 Talend 构件与较新的 Java 版本兼容。有关从 Java 8 或 11 升级到 Java 17 的示例，请参阅[使用较新版本的 Java](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/migrating-artifacts-to-use-java-17 "最佳做法是使用具有最新支持的 Java 版本的 Talend 产品。")。

信息注释限制： Talend LogServer（已弃用），Nexus 不支持 Java 17。Nexus 不支持 Java 11。

## 为 Linux 上的所有 Talend 服务升级 Java

### 步骤

1. 根据[兼容的 Java 环境](https://help.qlik.com/talend/en-US/installation-guide-linux/8.0/compatible-java-environments)页面安装新的 Java 版本，但是请勿卸载或删除旧的Java版本。

   在运行此脚本之前删除旧的 Java 版本可能会导致某些 Talend 服务在更新 Java 后无法启动。
2. 使用命令 systemctl | grep talend 查找所有正在运行的 Talend 服务。
3. 使用命令 systemctl stop &lt;service name&gt; 停止所有 Talend 服务。
4. 使用文本编辑器打开 [update_java.sh](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/Content/Resources/attachments/update_java.sh)
5. 在脚本中找到变量并按如下方式设置它们：

   TALEND\_HOME=&lt;Talend\_home\_folder&gt;（例如：TALEND\_HOME=/opt/Talend-8.0.1）

   PROD\_VER=&lt;Talend\_version&gt;（例如：PROD\_VER=8.0.1）

   JAVA\_HOME=&lt;Java\_home\_folder&gt;（例如：JAVA\_HOME=/usr/lib/jvm/jre1.8.0\_221）
6. 以超级用户身份，运行 [update_java.sh](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/Content/Resources/attachments/update_java.sh)。此脚本将用安装中的新值替换 Java 的硬编码路径。
7. 重新启动计算机或使用命令 systemctl start &lt;service name&gt; 手动启动所有 Talend 服务。
8. 可选： 成功启动所有服务后，如果其他软件不使用旧的 Java 版本，则可以将其删除。

### 结果

除 Talend Remote Engine 外，所有 Talend 服务现在都使用新的 Java 版本。

## 为 Windows 上所有 Talend 服务升级 Java

### 步骤

1. 将 [update_java.bat](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/Content/Resources/attachments/update_java.bat) 文件放在 Talend 主文件夹的 utils 文件夹中。
2. 如果您下载了 [sed.zip](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/Content/Resources/attachments/sed.zip)，请将其放置在 utils 文件夹中。
3. 根据[兼容的 Java 环境](https://help.qlik.com/talend/en-US/installation-guide-linux/8.0/compatible-java-environments)页面安装新的 Java 版本，但是请勿卸载或删除旧的Java版本。

   在运行此脚本之前删除旧的 Java 版本可能会导致某些 Talend 服务在更新 Java 后无法启动。
4. 在 Windows 搜索选项卡中，键入 services.msc 并打开 Microsoft 管理控制台应用程序。
5. 查找 Talend 服务列表，右键单击每个服务并选择停止。

   最后停止的服务应该是 Talend Administration Center、Talend Identity and Access Management，然后是 Kafka、ZooKeeper 和 MongoDB。
6. 转到系统属性 &gt; 高级 &gt; 环境变量。
7. 更新 JAVA\_HOME 环境变量和 PATH 变量：
   1. 在 System Variables (系统变量) 下，单击 New... (新建) 创建变量。将变量命名为 JAVA\_HOME，输入到 Java 环境的路径，然后单击 OK (确定)。
   1. 在 System Variables (系统变量) 下，选择 Path (路径) 变量并单击 Edit... (编辑...)，在 Path 变量值的末尾添加以下变量：;%JAVA\_HOME%\bin
8. 打开命令提示符应用程序。
9. 键入 echo %JAVA\_HOME%，然后按 Enter 键。显示的值是新的值集。
10. 使用文本编辑器打开 [update_java.bat](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/Content/Resources/attachments/update_java.bat)。
11. 在脚本中找到变量并按如下方式设置它们：

    "TALEND\_HOME=C:\&lt;Talend\_home\_folder&gt;"（例如：set "TALEND\_HOME=C:\Talend\8.0.1"）

    "PROD\_VER=&lt;Talend\_version&gt;"（例如：set "PROD\_VER=8.0.1"）
12. 如果您还没有此配置，在 setenv.bat 文件中添加 --add-opens=java.base/java.lang=ALL-UNNAMED。

    然后以管理员身份运行以下命令以启动 Talend Administration Center 服务：
    ```
    cd C:\Talend\8.0.1\tac\apache-tomcat\bin
    tomcat9.exe //US//talend-tac-8.0.1 ++JvmOptions="--add-opens=java.base/java.lang=ALL-UNNAMED
    ```
13. 以超级用户身份，运行 [update_java.bat](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/Content/Resources/attachments/update_java.bat)。此脚本将用安装中的新值替换 Java 的硬编码路径。
14. 重新启动计算机或从 service.msc 应用程序手动启动所有 Talend 服务。
15. 可选： 成功启动所有服务后，如果其他软件不使用旧的 Java 版本，则可以将其删除。

### 结果

除 Talend Remote Engine 外，所有 Talend 服务现在都使用新的 Java 版本。

### 在该部分中

* [使用较新版本的 Java](https://help.qlik.com/talend/zh-CN/migration-upgrade-guide/8.0/migrating-artifacts-to-use-java-17)