RVM не установит JRuby, получает исключение - PullRequest
1 голос
/ 07 февраля 2011

Итак, на моей машине установлен rvm, и я набираю:

rvm install jruby

Сначала все выглядит хорошо, но в итоге я получаю:

    jruby-1.5.6 - #fetching 
jruby-1.5.6 - #extracted to /home/jenny/.rvm/src/jruby-1.5.6 (already extracted)
Building Nailgun
jruby-1.5.6 - #installing to /home/jenny/.rvm/rubies/jruby-1.5.6
jruby-1.5.6 - #importing default gemsets (/home/jenny/.rvm/gemsets/)
Copying across included gems
Exception in thread "main" java.lang.NoClassDefFoundError: org.jruby.Main
   at gnu.java.lang.MainThread.run(libgcj.so.9)
Caused by: java.lang.ClassNotFoundException: org.jruby.Main not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(libgcj.so.9)
   at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.9)
   at java.lang.ClassLoader.loadClass(libgcj.so.9)
   at java.lang.ClassLoader.loadClass(libgcj.so.9)
   at gnu.java.lang.MainThread.run(libgcj.so.9)
jenny@linux-auvv:~/workspace/pcms_stable> 

У меня нет абсолютно никакого контекста для отладки этого ... Я, честно говоря, понятия не имею, что делать ...

Я нахожусь на OpenSuse, и когда я набираю "java -version", я получаю:

    java version "1.6.0_0"
OpenJDK  Runtime Environment (build 1.6.0_0-b11)
OpenJDK Server VM (build 1.6.0_0-b11, mixed mode)

Я не вижу ссылок на требования java для JRuby, хотя ...

Что касается RVM, я бегу:

rvm 1.2.4 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]

Я могу без проблем установить другие рубины с помощью RVM (1.9.2, 1.8.7 и т. П.), Это первая проблема, которую я когда-либо обнаружил.

Кажется, неважно, какой jruby я устанавливаю. Мой рвм знает о:

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby[-1.5.6]
jruby-head

Я даже не получаю одинаковые ошибки для каждой из них:

Для 1.2.0, 1.3.1, 1.4.0 я получаю:

Fatal: GCJ (GNU Compiler for Java) is not supported by JRuby.

Где 1.5.6 и голова, получите мне ошибку, которую я упомянул первым.

Я ХОЧУ использовать JRuby с Rails 3, поэтому я решил, что хочу получить самую новую версию, которую я могу получить (с исключениями)

Есть ли что-нибудь, что я могу сделать, или я просто обречен, чтобы не иметь возможности использовать RVM для своих целей?

EDIT:

Я подтвердил, что виноват не только RVM, но и JRuby. Для тестирования я скачал JRuby вообще без rvm, через сайт (я выбрал версию 1.6). Я распаковал его согласно инструкции и набрал:

bin/jruby -v

в распакованном каталоге.

Я получил точно такую ​​же ошибку:

jenny@linux-auvv:~/jruby-1.6.0.RC1> bin/jruby -v
Exception in thread "main" java.lang.NoClassDefFoundError: org.jruby.Main
   at gnu.java.lang.MainThread.run(libgcj.so.9)
Caused by: java.lang.ClassNotFoundException: org.jruby.Main not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(libgcj.so.9)
   at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.9)
   at java.lang.ClassLoader.loadClass(libgcj.so.9)
   at java.lang.ClassLoader.loadClass(libgcj.so.9)
   at gnu.java.lang.MainThread.run(libgcj.so.9)

Итак, до сих пор понятия не имею, что происходит, но, по крайней мере, теперь я знаю, что это проблема jruby, а не rvm (хотя я все еще ХОЧУ, чтобы она была установлена ​​через rvm)

Edit:

Итак, я попытался обновить свой OpenJDK, и это было не игра в кости, но я нашел ДРУГОЙ вариант OpenJDK (который я не установил) через YAST, и установил ТО, и вдруг мой вручную установленный jruby работает просто отлично :

jenny@linux-auvv:~/jruby-1.6.0.RC1> bin/jruby -v

jruby 1.6.0.RC1 (уровень исправления ruby ​​1.8.7 330) (2011-01-10 769f847) (OpenJDK Client VM 1.6.0_0) [linux-i386-java]

Когда я набираю java -version, я даже получаю что-то другое:

    jenny@linux-auvv:~/jruby-1.6.0.RC1> java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.6.2) (suse-0.1.1-i386)
OpenJDK Server VM (build 14.0-b16, mixed mode)

Это даже работает в RVM, так что ура!

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011

Я бы попробовал установить Sun JRE / JDK.

Или, возможно, вы могли бы переустановить OpenJDK (возможно, самый простой способ сбросить его до значения по умолчанию в вашей системе).

Обновление:

Чтобы изменить Java по умолчанию, сделайте это.Сначала проверьте, какие Javas-файлы доступны:

update-alternatives --list java

Чтобы изменить, какой из них вы используете, сделайте следующее:

update-alternatives --config java
0 голосов
/ 07 февраля 2011

Я думаю, что ключ в этом:

Неустранимый: GCJ (компилятор GNU для Java) не поддерживается JRuby.

По любой причине ваша система настроена на запуск GCJ вместо вашего компилятора OpenJDK. Проверьте документы в своей системе и узнайте, как она обрабатывает случай, когда несколько вещей могут предоставить одно и то же имя службы (например, несколько версий компиляторов или несколько интерпретаторов) и посмотреть, что можно сделать, чтобы OpenJDK был обработчиком по умолчанию для компиляции Java и исполнение.

...