JRuby "no such file to load"

3

我使用通过rvm和gem版本1.8.24安装的jruby-1.6.7,创建了一个包含Gemfile的新项目:

source 'http://rubygems.org'
gem 'google-api-client'

还有一个main.rb文件:

require 'google/api_client'

之后

gem install bundler
bundle install
gem list

I get

addressable (2.2.8)
autoparse (0.3.1)
bouncy-castle-java (1.5.0146.1)
bundler (1.1.4)
extlib (0.9.15)
faraday (0.8.1, 0.7.6)
ffi (1.0.11 java)
google-api-client (0.4.3)
jruby-launcher (1.0.14 java)
jruby-openssl (0.7.7)
json (1.7.3 java)
jwt (0.1.4)
launchy (2.1.0 java)
multi_json (1.3.6)
multipart-post (1.1.5)
rack (1.4.1)
rake (0.9.2.2)
rubygems-bundler (1.0.2)
rubygems-update (1.8.24, 1.7.2)
rvm (1.11.3.3)
signet (0.3.4)
spoon (0.0.1)

但是当我运行 ruby main.rb 时,出现了一个错误:
LoadError: no such file to load -- google/api_client
  require at org/jruby/RubyKernel.java:1033
   (root) at main.rb:1

在MRI上一切似乎都正常工作。问题似乎不限于任何特定的宝石。

有人能帮我解决这个问题吗?

1个回答

7

除非您的环境中已经设置了 JRUBY_OPTS=--1.9,或者您在命令行上传递了 --1.9 标志,否则 JRuby 将默认使用 1.8 模式,这意味着在加载 gem 之前,您需要明确地在 main.rb 中调用 require 'rubygems'


感谢您的编辑建议。一般来说,如果您将使用多个Ruby虚拟机(您提到了MRI),那么最好强制使用JRuby的“1.9”模式,而不是添加显式的“require”。在1.8和1.9之间还有其他差异,这可能会在未来给您带来麻烦。 - Ian Dickinson
3
从JRuby 1.7(rvm install jruby-1.7.0.preview1)开始,默认版本为1.9,或者您可以使用--1.9来安装JRuby并切换到1.9版本,无需使用JRUBY_OPTS=--1.9 - mpapis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接