JRuby"没有这样的文件加载"

Jas*_*per 3 ruby gem jruby bundler

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

source 'http://rubygems.org'
gem 'google-api-client'
Run Code Online (Sandbox Code Playgroud)

和一个main.rb:

require 'google/api_client'
Run Code Online (Sandbox Code Playgroud)

gem install bundler
bundle install
gem list
Run Code Online (Sandbox Code Playgroud)

我明白了

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)
Run Code Online (Sandbox Code Playgroud)

但是当我运行ruby main.rb时,会导致错误:

LoadError: no such file to load -- google/api_client
  require at org/jruby/RubyKernel.java:1033
   (root) at main.rb:1
Run Code Online (Sandbox Code Playgroud)

在MRI上,一切似乎都很好.这个问题似乎并没有任何特定的宝石.

有人可以帮我弄这个吗?

Ian*_*son 7

除非您JRUBY_OPTS=--1.9在您的环境中,或者--1.9在命令行上传递了标志,否则JRuby将默认为1.8模式,这意味着您require 'rubygems'main.rb加载gem之前必须明确地进入.

  • 从JRuby 1.7(`rvm install jruby-1.7.0.preview1`)开始,它默认为**1.9**,或者您可以使用`--1.9`来安装jruby,这也会切换它,不需要`JRUBY_OPTS = --1.9`. (3认同)