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

升级macOS Sonoma14.3后Docker容器libjvm.so加载失败求助

解决macOS Sonoma 14.3下Docker容器加载libj9vm29.so失败的问题

环境信息

  • 设备:MacBook M3 Pro
  • macOS版本:Sonoma 14.3
  • Docker Desktop版本:v4.26.1
  • 容器镜像:基于eclipse-temurin:17.0.8.1_1-jdk-jammy构建

报错详情

执行镜像构建或容器运行时触发以下错误:

2024-01-23 15:40:38 libjvm.so preloadLibrary(/opt/java/openjdk/lib/compressedrefs/libj9vm29.so): /opt/java/openjdk/lib/compressedrefs/libj9vm29.so: cannot enable executable stack as shared object requires: Invalid argument
2024-01-23 15:40:38 libjvm.so failed to load: j9vm29

解决办法

方法1:更新Docker Desktop到最新版本

Docker官方在4.27.0及以上版本修复了Sonoma 14.3的兼容性问题,升级后即可正常运行容器。

方法2:调整容器安全策略(无需升级Docker)

运行容器时添加--security-opt seccomp=unconfined参数,临时放宽安全限制:

docker run --security-opt seccomp=unconfined [你的镜像名/容器名]

方法3:修改镜像中的库文件标记

在Dockerfile中添加步骤,修改libj9vm29.so的可执行栈标记,从根源解决依赖问题:

FROM eclipse-temurin:17.0.8.1_1-jdk-jammy

RUN apt-get update && apt-get install -y --no-install-recommends execstack \
    && execstack -c /opt/java/openjdk/lib/compressedrefs/libj9vm29.so \
    && apt-get purge -y --auto-remove execstack \
    && rm -rf /var/lib/apt/lists/*

重新构建镜像后即可正常运行。

原因说明

macOS Sonoma 14.3更新了内核安全规则,Docker默认的seccomp配置会阻止程序设置可执行栈,而eclipse-temurin:17.0.8.1_1-jdk-jammy中的libj9vm29.so依赖可执行栈才能加载,因此触发报错。

内容的提问来源于stack exchange,提问作者Nahidul Islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:48:27