Как установить правильное значение для JRUBY_HOME, если я использую rbenv

Я установил JRuby с rbenv

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?


person aboltart    schedule 16.05.2012    source источник


Ответы (3)


Я пробовал этот инструмент (rbenv) после того, как какое-то время управлял своим PATH вручную, в первый раз и получил ту же ошибку: Ошибка: не удалось найти или загрузить основной класс org.jruby.Main Я совершенно забыл отключить старую настройку JRUBY_HOME в моем файле .bash_rc после удаления моей предыдущей версии jruby, чтобы попробовать rbenv.

В ответ на другие ответы у меня есть определенные инструменты и библиотеки, для работы которых требуется установить переменную 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". Надеюсь, это прояснит ситуацию. Я понимаю, что это старый вопрос, но когда я искал ошибку, это был первый соответствующий результат.

person Edub Kendo    schedule 09.01.2013
comment
Вам просто нужно отключить JRUBY_HOME. Нет необходимости устанавливать новый JRUBY_HOME, если он управляется rbenv/rvm, как говорит Себастьян. - person Salil; 27.03.2013
comment
Салил, я думаю, вы пропустили ту часть, где я сказал, что некоторые инструменты, одним из которых является vert.x, ТРЕБУЮТ установки JRUBY_HOME, или сделали это в то время, когда я отвечал на это. Неважно, используете ли вы rbenv или rvm, он проверяет JRUBY_HOME и не будет работать, если он не установлен. Однако решение было достаточно простым, просто правильно установите JRUBY_HOME, и оно заработает. Эта ошибка возникает, когда вы неправильно указываете путь. Это может быть не то, как rbenv предназначен для использования, но иногда вам просто нужно, чтобы что-то работало. В настоящее время я просто использую jruby для всего, и мне не нужно беспокоиться о таких инструментах. - person Edub Kendo; 28.03.2013

Весь смысл таких утилит, как rbenv или rvm, заключается в том, чтобы иметь возможность переключаться между реализациями ruby, не беспокоясь об изменении переменных среды, поскольку они делают это за вас; вам не нужно устанавливать $JRUBY_HOME для запуска JRuby (кстати, для вас это будет /home/myjava_api/.rbenv/versions/jruby-1.6.7.2), поскольку эти утилиты предназначены для того, чтобы сделать базовую реализацию прозрачной.

person Sébastien Le Callonnec    schedule 06.06.2012

Я думаю, очевидный вопрос: зачем вам $RUBY_HOME, если он отлично работает и без него?

JRuby настолько прост в установке, что вам не нужен менеджер версий. Просто скачайте Zip-файл и распакуйте его в любой каталог, который вам нравится. Затем добавьте каталог JRuby/bin к вашему пути. В вашем случае это будет /home/myjava_api/.rbenv/versions/jruby-1.6.7.2/bin.

Если у вас есть несколько проектов, требующих разных версий JRuby или разных групп gem, просто извлеките копию соответствующей версии JRuby для каждого проекта. Предполагая, что вы используете правильный PATH для каждого проекта, будет работать правильная версия JRuby, и в ней будут все gem, которые вы установили для этого проекта, и каждый проект будет совершенно отдельным.

person user1434691    schedule 04.06.2012