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

JRuby执行bundle install时遇waitpid等错误求助

解决M2 Mac上JRuby执行bundle install的错误问题

问题概述

在M2 Mac(arm64架构)上使用JRuby 9.2.20.1/9.2.9.0/9.4.6.0等版本执行bundle install时,出现以下核心错误及警告:

  • JDK IO权限警告
  • RubyGems版本bug警告
  • NotImplementedError: waitpid unsupported or native support failed to load错误

分步解决方法

1. 修复JDK IO权限警告

将JVM参数添加到JRuby运行时中,可通过两种方式设置:

  • 临时生效(单次命令):
    JRUBY_OPTS="--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED" bundle install
    
  • 永久生效(全局配置):
    在你的shell配置文件(如~/.zshrc或~/.bashrc)中添加以下内容,执行source ~/.zshrc(对应你的shell)生效:
    export JRUBY_OPTS="--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED"
    

2. 升级RubyGems版本

执行命令修复RubyGems的required_ruby_version bug:

gem update --system 3.2.3

若提示权限问题,优先检查RVM权限配置,必要时添加sudo执行。

3. 解决waitpid不支持的核心错误

这是M2 Mac arm64架构与JRuby native进程支持不兼容导致的,按以下步骤处理:

  • 确保使用arm64版本的JDK:
    安装OpenJDK 11或17的arm64版本(不要用x86架构的JDK),执行java -version验证输出中包含aarch64标识。
  • 安装arm64版本的JRuby:
    若当前JRuby是x86版本(通过Rosetta运行),先卸载后重新安装arm64版本:
    rvm uninstall jruby-9.4.6.0
    rvm install jruby-9.4.6.0 --binary
    
    执行rvm list确认版本标注为aarch64。
  • 禁用JRuby native进程支持(临时 workaround):
    在执行bundle时添加--disable-native-process参数:
    JRUBY_OPTS="--disable-native-process --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED" bundle install
    
  • 升级到最新JRuby版本:
    安装JRuby 9.4.x系列的最新版本(如9.4.8.0),官方对arm64架构的兼容性修复更完善:
    rvm install jruby-9.4.8.0 --binary
    rvm use jruby-9.4.8.0
    bundle install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:43:32