所以,我在我的机器上安装了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中运行,所以万岁!
答案 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编译的默认处理程序和执行。