运行复制到 Azure 的复制活动时出现 UserErrorJreNotFound 错误消息

本文针对尝试使用基于 Java 的工具或程序将内容复制到 Microsoft Azure 时出现的问题提供了解决方法。

原始产品版本: 数据工厂
原始 KB 数: 4497239

症状

尝试使用基于 Java 的工具或程序 ((例如,) 复制 ORC 或 Parquet 格式化文件)将内容复制到 Microsoft Azure 时,会收到类似于以下内容的错误消息:

ErrorCode=UserErrorJreNotFound,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Java 运行时环境未找到。 转到 http://go.microsoft.com/fwlink/?LinkId=808605 下载并安装在 Integration Runtime(自承载) 节点计算机上。 注意 64 位Integration Runtime需要 64 位 JRE,32 位Integration Runtime需要 32 位 JRE.,Source=Microsoft.DataTransfer.Common,'Type=System.DllNotFoundException,Message=无法加载 DLL'jvm.dll':找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E) ,Source=Microsoft.DataTransfer.Richfile.HiveOrcBridge

原因

出现此问题的原因有以下任一:

  • Integration Runtime 服务器上未正确安装 Java 运行时环境 (JRE) 。

  • Integration Runtime服务器缺少 JRE 所需的依赖项。

默认情况下,Integration Runtime使用注册表项解析 JRE 路径。 应在 JRE 安装过程中自动设置这些条目。

解决方案

请仔细遵循本部分中的步骤进行操作。 对注册表修改不当可能会导致严重问题。 修改之前,备份注册表以便在发生问题时进行还原

若要解决此问题,请按照以下步骤验证 JRE 安装的状态:

  1. 请确保在同一平台上安装了 Integration Runtime (Diahost.exe) 和 JRE。 检查以下条件:

    • 64 位 ADF Integration Runtime的 64 位 JRE 应安装在 文件夹中:C:\Program Files\Java\

      注意

      文件夹不是 C:\Program Files (x86)\Java\

    • JRE 7 和 JRE 8 都与此复制活动兼容。 JRE 6 和早于 JRE 6 的版本尚未验证此用途。

  2. 检查注册表中的相应设置。 为此,请按照下列步骤操作:

    1. “运行 ”菜单中,键入 “Regedit”,然后按 Enter。

    2. 在导航窗格中,找到以下子项: HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment

      在“ 详细信息 ”窗格中,应有一个显示 JRE 版本 (例如 1.8) 的当前版本条目。

      注册表中 Java 运行时环境版本的屏幕截图。

    3. 在导航窗格中,找到与版本 (完全匹配的子项,例如 JRE 文件夹下的 1.8) 。 在详细信息窗格中,应有 一个 JavaHome 条目。 此项的值是 JRE 安装路径。

      详细信息窗格中 JavaHome 条目的屏幕截图。

  3. 在以下路径中找到 bin\server 文件夹:

    C:\Program Files\Java\jre1.8.0_74

    屏幕截图显示 bin 文件夹的位置。

  4. 检查此文件夹是否包含 jvm.dll 文件。 否则,检查 文件夹中的文件bin\client

    用于检查 bin 文件夹中 jvm.dll 文件的屏幕截图。  

注意

  • 如果这些配置中的任何一个未如这些步骤中所述,请使用 JRE Windows 安装程序 来修复问题。
  • 如果这些步骤中的所有配置都如所述正确,则系统中可能缺少 VC++ 运行时库。 可以通过安装 VC++ 2010 可再发行程序包来解决此问题。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。