RVM不会安装JRuby,会出现异常

时间:2011-02-07 13:47:22

标签: jruby rvm

所以,我在我的机器上安装了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)

我看不到对JRuby的java要求的任何引用,但是......

就RVM而言,我正在运行:

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

我可以用RVM(1.9.2,1.8.7,那种东西)安装其他红宝石没问题,这是我发现的第一个问题。

我安装的犹太人似乎并不重要。我的rvm知道:

# 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用于我的目的?

编辑:

我已经确认它不仅仅是RVM,而且应该归咎于JRuby。为了测试,我通过网站(我选择版本1.6)完全没有rvm下载JRuby。我按照说明解压缩它,并输入:

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)

所以,仍然不知道发生了什么,但至少我现在知道这是一个犹豫不决的问题,而不是一个rvm问题(尽管我仍然想通过rvm安装它)

编辑:

所以,我尝试更新我的OpenJDK,并没有骰子,但我通过YAST找到了另一个版本的OpenJDK(我没有安装),并安装了那个,突然我手动安装的jruby工作正常:

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

jruby 1.6.0.RC1(ruby 1.8.7 patchlevel 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 个答案:

答案 0 :(得分:2)

我会尝试安装Sun JRE / JDK。

或许您可以重新安装OpenJDK(可能是将其重置为系统默认设置的最简单方法)。

<强>更新

要更改默认的Java,请执行此操作。首先检查哪些Javas可用:

update-alternatives --list java

要实际更改您正在使用的那个,请执行以下操作:

update-alternatives --config java

答案 1 :(得分:0)

我认为线索在于:

  

致命:JRuby不支持GCJ(GNU Compiler for Java)。

无论出于何种原因,您的系统都配置为启动GCJ而不是OpenJDK编译器。检查系统上的文档,了解它如何处理多个东西可以提供相同服务名称的情况(例如,多个版本的编译器,或多个解释器),并了解如何使OpenJDK成为Java编译的默认处理程序和执行。