【问题标题】:RVM won't install JRuby, gets exceptionRVM 不会安装 JRuby,出现异常
【发布时间】: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 中工作,所以万岁!

【问题讨论】:

    标签: jruby rvm


    【解决方案1】:

    我会尝试安装 Sun JRE/JDK。

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

    更新:

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

    update-alternatives --list java
    

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

    update-alternatives --config java
    

    【讨论】:

    • 我尝试重新安装 OpenJDK(我不知道如何安装他们为 linux 提供的 Sun 的 .bin 文件),但我仍然遇到同样的两个错误...不知道为什么要尝试将 GCJ 用于较旧的东西(但可能不适用于较新的东西?等等,不,他们在 libgcj.so 文件中引用它)也许我可以以某种方式完全删除它?
    • 想出了如何安装 Sun,也没有改变任何东西(当我做 java-version 时,我仍然看到对 OpenJDK 的引用)。像 JMCO 建议的那样,我会考虑改变它使用的 JDK。
    • 您使用的是哪个操作系统/发行版?
    • OpenSuse。我最终发现我可以使用 YAST 来下载 sun JDK(就像我使用 OpenJDK 一样),但它仍然在 java 下列出了 OpenJDK,无论出于何种原因。
    【解决方案2】:

    我认为线索是这样的:

    致命:JRuby 不支持 GCJ(Java 的 GNU 编译器)。

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

    【讨论】:

    • 我很担心...因为如果它是系统配置,那么当我输入 java -version 时,您会认为它会列出 GCJ,而不是 OpenJDK...我希望它不是“jruby 被配置为更喜欢损坏的 JDK”或类似的东西。不过,我会调查一下。
    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多