【问题标题】:Creating a gem using Jruby and not Ruby使用 Jruby 而不是 Ruby 创建 gem
【发布时间】:2015-09-07 08:05:06
【问题描述】:

所以我成功地编写了一个 jruby 文件并从一个 jar 文件中读取。

我还创建了一个单独的 Ruby gem,安装并成功使用它。

我想用 Jruby(而不是 ruby​​)写一个 gem。当我尝试这样做并安装 gem 后,它给了我以下错误:

  `require': cannot load such file -- java (LoadError)

是否有一种使用 jruby 编写 gem 的特定方法与使用 ruby​​ 编写 gem 的方式不同?如果是这样,请指导我阅读一个有用的教程,帮助我使用 jruby 创建一个 gem

谢谢。

编辑:

我在 jruby_gem.gemspec 文件中添加了以下内容

s.platform = 'java'

使用命令构建 gem:

gem build jruby_gem.gemspec

并使用命令安装它:

gem install jruby_gem-0.0.0

当我尝试使用命令运行它时:

irb
require 'jrubt_gem'

我仍然遇到同样的错误。

【问题讨论】:

  • 您的 gem 是用纯 ruby​​ 编写的还是调用 java 库?纯红宝石宝石在技术上应该能够在 MRI 或 jRuby 上运行。您在安装或运行 gem 期间是否遇到该错误?如果跑的时候得到,你是怎么跑的?
  • 没有错误。我包括 java 以及一个 .jar 文件。我使用 gem build 构建它,并使用 gem install 安装它。
  • @joonty 请检查我的编辑..

标签: java ruby gem rubygems jruby


【解决方案1】:

Rubygems 是通用 ruby​​ 代码的一种包格式,所有 ruby​​ 实现都使用它,包括 MRI(原始 C-Ruby)、JRuby、Rubinius 等。

当您在 gem 中使用特定于平台的代码时,例如在 JRuby 中使用 Java 或在基于 C 的 Ruby 中使用 C-Extensions,您必须将 gem 与适当的 Ruby 一起使用。

这意味着,如果您想直接在 gem 中调用 Java 代码,您必须将它与 JRuby 一起使用。如果您只是在 MRI 上安装并需要 gem,它将无法正常工作。

【讨论】:

  • 所以我安装了 Jruby,当我使用 gem build 和 gem 安装时,它使用 Ruby。如何让它使用 Jruby gems 来构建和安装我的 gem?
  • 这取决于您如何安装 ruby​​ 和 jruby。您可能想要使用像 rvm、rbenv 甚至 chruby 这样的 ruby​​ 版本管理器。
  • 感谢您的帮助,谢谢。我希望这对其他人也有帮助。
【解决方案2】:

使用以下命令

jruby -S gem build jruby_gem.gemspecs

和

jruby -S gem install jruby_gem-0.0.0-java.gem

终于为我工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多