【发布时间】:2011-02-07 13:47:21
【问题描述】:
所以,我在我的机器上安装了 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 之类)安装其他 rubies,这是我发现的第一个问题。
我安装哪个 jruby 似乎也无关紧要。我的 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 和 head 让我得到我首先提到的错误。
我想在 Rails 3 中使用 JRuby,所以我想我想要我能得到的最新版本(有例外)
有什么我可以做的吗,还是我注定无法将 RVM 用于我的目的?
编辑:
我已经确认,不仅仅是 RVM,还有 JRuby。为了测试,我通过网站下载了完全没有 rvm 的 JRuby(我选择了 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 安装它)
编辑:
所以,我尝试更新我的 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 中工作,所以万岁!
【问题讨论】: