如果我使用rbenv,如何为JRUBY_HOME设置正确的值

时间:2012-05-16 12:38:12

标签: jruby rbenv

我用rbenv

安装了JRuby
ruby -v
jruby 1.6.7.2 (ruby-1.9.2-p312) (2012-05-01 26e08ba) (Java HotSpot(TM) 64-Bit Server VM 1.7.0_01) [linux-amd64-java]

which ruby
~/.rbenv/shims/ruby

gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.24
  - RUBY VERSION: 1.9.2 (2012-05-01 patchlevel 312) [java]
  - INSTALLATION DIRECTORY: /home/myjava_api/.rbenv/versions/jruby-1.6.7.2/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /home/myjava_api/.rbenv/versions/jruby-1.6.7.2/bin/jruby
  - EXECUTABLE DIRECTORY: /home/myjava_api/.rbenv/versions/jruby-1.6.7.2/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-java-1.7
  - GEM PATHS:
     - /home/myjava_api/.rbenv/versions/jruby-1.6.7.2/lib/ruby/gems/1.8
     - /home/myjava_api/.gem/jruby/1.9
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "install" => "--no-rdoc --no-ri"
     - "update" => "--no-rdoc --no-ri"
  - REMOTE SOURCES:
     - http://rubygems.org/

但$ JRUBY_HOME未设置

当我将$ JRUBY_HOME设置为“/home/myjava_api/.rbenv/versions/jruby-1.6.7.2/bin/jruby”并在我执行“ ruby​​ -v ”后重新登录我收到错误:“错误:无法找到或加载主类org.jruby.Main

当我删除$ JRUBY_HOME变量“ ruby​​ -v ”工作正常

什么必须正确$ JRUBY_HOME值?

3 个答案:

答案 0 :(得分:3)

我在手动管理PATH一段时间后尝试使用此工具(rbenv),这是第一次出现同样的错误:错误:无法找到或加载主类org.jruby.Main < /强> 在卸载我以前版本的jruby以试用rbenv之后,我完全忘记取消设置.bash_rc文件中的旧JRUBY_HOME设置。

为了回应其他答案,我有一些工具和库需要设置JRUBY_HOME变量才能工作,http://vertx.io/就是一个例子。另一方面,现在有许多宝石和工具走向另一条路线,似乎假设您正在使用rvm或rbenv。所以使用其中一种工具,但继续设置JRUBY_HOME似乎是阻力最小的路径。

幸运的是,当JRUBY_HOME设置正确时,它可以正常使用rbenv。例如,我的设置如export JRUBY_HOME="/home/user/.rbenv/versions/jruby-1.7.1"

原始海报的错误似乎是试图将变量设置为jruby可执行文件,而事实上JRUBY_HOME应该只是整个jruby目录。我认为他应该是"/home/myjava_api/.rbenv/versions/jruby-1.6.7.2"。希望这能说明问题。我意识到这是一个老问题,但是当我搜索错误时,这是​​第一个相关的结果。

答案 1 :(得分:2)

rbenvrvm这样的实用程序的全部意义是能够在ruby实现之间切换而不必担心改变环境变量,就像它们为你做的那样;您不需要设置$JRUBY_HOME来运行JRuby(顺便说一句,因为这将是/home/myjava_api/.rbenv/versions/jruby-1.6.7.2),因为这些实用程序旨在使底层实现透明。

答案 2 :(得分:1)

我猜这个显而易见的问题是,如果没有它,你为什么要$RUBY_HOME呢?

JRuby安装非常简单,您不需要任何版本管理器。只需下载Zip文件并将其解压缩到您喜欢的任何目录。然后将JRuby/bin目录添加到您的路径中。在您的情况下,似乎是/home/myjava_api/.rbenv/versions/jruby-1.6.7.2/bin

如果您有多个项目需要不同版本的JRuby或不同的gem组,请为每个项目提取相应JRuby版本的副本。假设您为每个项目使用了正确的PATH,那么JRuby的正确版本将会运行,并且您将为该项目安装所有gem,并且每个项目都将完全分开。