Итак, на моей машине установлен 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, так что ура!