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

ARM64架构下JRuby执行bundle install连接rubygems.org失败求助

ARM64架构JRuby下bundle install失败(snakeyaml-engine-2.7.jar缺失)的排查与解决

环境信息

  • JRuby版本:jruby-9.3.10.0 [arm64]
  • Bundler版本:2.4.22

问题现象

  1. 执行bundle install时触发意外错误,无法继续
  2. 尝试安装指定版本Bundler 2.2.17时,抛出LoadError,提示缺失org/snakeyaml/snakeyaml-engine/2.7/snakeyaml-engine-2.7.jar
  3. curl测试rubygems.org连接正常,Ruby net/http也能成功连接,但Bundler和RubyGems操作均因上述jar缺失报错
  4. 已尝试手动下载jar放置到对应路径、在JRuby仓库提交issue,问题仍未解决,怀疑与Java权限配置有关

排查与解决步骤

1. 确认JRuby依赖加载路径

JRuby会从自身lib目录或Java classpath加载依赖jar,手动放置jar后需校验路径正确性:

  • 找到JRuby安装目录下的lib文件夹(通常为$JRUBY_HOME/lib)
  • 检查是否存在org/snakeyaml/snakeyaml-engine/2.7/层级目录,无则手动创建,将下载的snakeyaml-engine-2.7.jar放入其中
  • 执行echo $CLASSPATH查看系统classpath,确认jar所在路径已被包含,未包含则临时添加:
    export CLASSPATH=$CLASSPATH:/path/to/snakeyaml-engine-2.7.jar
    

2. 检查Java权限配置

若因权限问题无法读取jar文件,按以下操作处理:

  • 查看jar文件及所在目录的权限:
    ls -l /path/to/snakeyaml-engine-2.7.jar
    ls -ld /path/to/parent/directory
    
  • 确保运行JRuby的用户对该jar文件及目录拥有读权限,权限不足则修改:
    chmod +r /path/to/snakeyaml-engine-2.7.jar
    chmod +rx /path/to/parent/directory
    
  • 若使用Java安全策略文件(java.policy),检查是否有限制读取该jar的规则,必要时添加授权:
    grant {
        permission java.io.FilePermission "/path/to/snakeyaml-engine-2.7.jar", "read";
    };
    

3. 重置Bundler环境

修复依赖后,重置Bundler配置确保加载新依赖:

# 清除Bundler缓存
bundle clean --force
# 重新安装指定版本Bundler
gem install bundler -v 2.2.17
# 重新执行bundle install
bundle install

4. 验证JRuby依赖加载

通过JRuby命令行直接测试snakeyaml类加载,确认依赖是否生效:

jruby -e "require 'org.snakeyaml.engine.v2.api.Load'"

若未报错,说明依赖已成功加载,可再次尝试Bundler操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:22:08