【问题标题】:How to enable C extension support in jRuby?如何在 jRuby 中启用 C 扩展支持?
【发布时间】:2013-03-25 15:01:52
【问题描述】:

我想安装一个 gem,但我收到以下错误:

Building native extensions.  This could take a while...
ERROR:  Error installing twitter-login:
        ERROR: Failed to build gem native extension.

        C:/nwcloud/jruby-1.7.2/bin/jruby.exe extconf.rb
NotImplementedError: C extension support is not enabled. Pass -Xcext.enabled=true to JRuby or set JRUBY_OPTS or modify .jrubyrc to enable.

我也读过 this question 遇到同样的问题,但我什至不知道如何启用三个选项的支持,因为我不知道如何将 -Xcext.enabled=true 传递给 JRuby 或设置 JRUBY_OPTS 或 modify 。 jrubyrc 来启用。

谁能帮我解决我的初学者问题?

【问题讨论】:

  • 对不起,..但我不明白如何才能适应我的问题。而且我的项目文件夹中没有 .rvmrc .. ?
  • 它旨在让您阅读那里提供的所有解决方案的字里行间。例如,这个例子:export JRUBY_OPTS="--1.9 -J-XX:+CMSClassUnloadingEnabled -J-XX:+UseConcMarkSweepGC -J-XX:MaxPermSize=256m -J-Xmx1024m",告诉您 JRUBY_OPTS 是一个 environment 变量,设置其内容的一种方法就是这样。并非所有解决方案都提供方便的复制/粘贴格式。
  • 我添加了一个新的系统环境变量,如下所示:变量:JRUBY_OPTS 值:--1.9 -Xcext.enabled=true .. 但它不起作用。我必须创建这样的 .rvmrc 文件吗?
  • 应该注意的是,C 扩展支持正在考虑在 JRuby 的未来版本中被淘汰 github.com/jruby/jruby/wiki/C-Extension-Alternatives

标签: ruby configuration rubygems jruby


【解决方案1】:

确保您使用的是最新的 openjdk(在撰写本文时为 7 update 21)和最新的 JRuby (1.7.4)。

在您的用户主文件夹中创建一个名为 .jrubyrc 的文件。

添加以下内容;

cext.enabled=true

完成

【讨论】:

  • 我们可以将其设为特定于项目的设置而不是特定于机器的设置吗?
【解决方案2】:

Rodrigo 建议的.jrubyrc 编辑对我不起作用(jdk 7u25 / JRuby 1.7.4),但导出 JRUBY_OPTS 确实可以解决问题:

export JRUBY_OPTS="--1.9 -Xcext.enabled=true"

【讨论】:

  • 在 windows 中也可以正常工作:set JRUBY_OPTS="--1.9 -Xcext.enabled=true"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多