You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows容器中自托管集成运行时缺失jvm.dll问题求助

解决Windows容器中ADF自托管集成运行时(SHIR)写入Parquet文件时的JRENotFound错误

问题场景

基于微软Windows容器镜像部署SHIR后,基础任务运行正常,但写入Parquet文件时触发JreNotFound错误,提示无法加载jvm.dll。已完成以下操作但问题未解决:

  • 安装Microsoft Visual C++ 2010 Service Pack 1
  • 安装64位Microsoft OpenJDK 17.0.6 LTS
  • 手动设置系统级JAVA_HOME环境变量
  • 验证java -version输出正常

解决方案

1. 确认JDK组件完整性与jvm.dll路径

检查OpenJDK安装目录下是否存在jvm.dll,路径应为:
C:\Program Files\Microsoft\jdk-17.0.6.10-hotspot\bin\server\jvm.dll

  • 若文件缺失,重新安装OpenJDK并确保勾选完整组件,避免自定义安装时遗漏相关模块。

2. 配置系统PATH环境变量

仅设置JAVA_HOME不足以让SHIR进程找到JDK依赖,需将JDK的bin目录加入系统PATH:
在build.ps1中添加:

setx -m PATH "%PATH%;%JAVA_HOME%\bin"
  • 确保该路径在容器PATH中优先级靠前,避免其他JRE/JDK路径干扰。

3. 确保SHIR进程加载最新环境变量

SHIR服务可能在JDK安装前启动,导致未读取到新的环境变量:

  • 重启SHIR服务:
    Restart-Service -Name "IntegrationRuntime5.0"
    
  • 或直接重启容器,确保环境变量完全生效。

4. 验证SHIR进程的环境变量与权限

  • 查看SHIR服务进程的环境变量,确认JAVA_HOME和PATH已正确加载:
    Get-Process -Name IntegrationRuntime* | ForEach-Object { Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\$($_.Name)\Environment" }
    
  • 授予Local System账户(SHIR默认运行账户)JDK目录的完整权限:
    icacls "C:\Program Files\Microsoft\jdk-17.0.6.10-hotspot" /grant "NT AUTHORITY\SYSTEM:(OI)(CI)F" /T
    

5. 直接在SHIR配置中指定JRE路径

编辑SHIR配置文件C:\Program Files\Microsoft Integration Runtime\5.0\Shared\Microsoft.DataTransfer.Node.Configuration.json,添加JRE路径:

{
  "JavaHome": "C:\\Program Files\\Microsoft\\jdk-17.0.6.10-hotspot"
}

修改后重启SHIR服务。

6. 确认VC++依赖版本匹配

确保安装的是64位版本的Microsoft Visual C++ 2010 Service Pack 1 Redistributable,SHIR为64位进程,需对应版本的运行库才能加载jvm.dll。

内容的提问来源于stack exchange,提问作者Andre.Santarosa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:22:42