我用rbenv
安装了JRubyruby -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值?
答案 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)
像rbenv
或rvm
这样的实用程序的全部意义是能够在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
,并且每个项目都将完全分开。