【问题标题】:NoClassDefFoundError on org.jruby.Mainorg.jruby.Main 上的 NoClassDefFoundError
【发布时间】:2011-05-17 23:39:57
【问题描述】:

我正在尝试使用 JRuby 1.4.0RC1 在我的 Windows 机器上安装 hpricot gem。我正在尝试遵循相关问题的建议(请参阅-> Installing hpricot for JRuby)。

根据答案的建议,我拉出了 hpricot 的 git 头并从它的目录中运行:

jruby -S rake package_jruby
cd pkg
sudo jgem install ./hpricot-0.8.1-jruby.gem

但是当我运行它时,我得到以下 NoClassDefFoundError:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/Main
Caused by: java.lang.ClassNotFoundException: org.jruby.Main
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: org.jruby.Main.  Program will exit.

显然我的 JRUBY_HOME\lib\jruby.jar 丢失了。

运行 jruby -v 工作正常,所以我很困惑我的类路径在哪里搞砸了。

【问题讨论】:

    标签: java windows jruby hpricot


    【解决方案1】:

    您的 jruby 安装似乎没有完成。你抢到了binsrc 分区吗?检查lib/jruby.jar 是否存在,确保bin/jrubylib/jruby.jar 位于同一jruby 位置,并测试java -jar lib/jruby.jar -e "puts 'hello'" 以查看它是否正常工作。

    【讨论】:

    • 我认为你在正确的轨道上!我使用“JRuby 1.4.0RC1 Windows Executable”来安装 JRuby。当我尝试 java -jar lib/jruby.jar -e "puts 'hello'" 时,我收到消息:“无法访问 jarfile lib/jruby.jar”。我是否必须在 CP 中为每个 java 执行指定 JRUBY_HOME,或者是否有办法(或者安装程序应该完成此操作)可以使 JRUBY_HOME 包含为默认值?感谢您的帮助!
    • 您可能想尝试 RC2 安装程序;我认为 RC1 安装程序或最初运行 JRuby 的 bat 文件存在一些问题。现在它附带了一个 jruby.exe,它可能对您正常工作。如果没有,请在jira.codehaus.org/browse/JRUBY 提交错误
    【解决方案2】:

    我怀疑 sudo 不会继承您的环境变量。所以 JRUBY_HOME 不见了。尝试将其添加到 jgem 配置文件中。

    【讨论】:

    • 如何将 JRUBY_HOME 添加到 jgem 配置文件中? $JRUBY_HOME 在我的 bash 和 Windows cmd 会话中回显。
    • 执行 'sudo jgem set' 并检查它是否有变量。如果没有,请转到 ~jgem(它是 jgem 主页),找到 .profile 文件,然后在其中添加变量。
    • 非常感谢您的建议。不确定我是否能够按照您的建议进行操作。 JRuby 即将出现在 gem 环境中(见下文)。当我检查安装目录时,我没有看到任何代表配置文件的文件。请在下面查看我的“答案”以获取更多上下文。
    【解决方案3】:

    我在 Windows 上。我不确定 JRuby 1.4 是否删除了“j”前缀。 jgem 未被识别,但 gem 被识别。无论如何,当我获得 gem 环境时:

    C:\tmp\hpricot>gem environment
    RubyGems Environment:
      - RUBYGEMS VERSION: 1.3.5
      - RUBY VERSION: 1.8.7 (2009-09-30 patchlevel 174) [java]
      - INSTALLATION DIRECTORY: C:/jruby-1.4.0RC1/lib/ruby/gems/1.8
      - RUBY EXECUTABLE: C:/jruby-1.4.0RC1/bin/../bin/jruby.bat
      - EXECUTABLE DIRECTORY: C:/jruby-1.4.0RC1/bin/../bin
      - RUBYGEMS PLATFORMS:
        - ruby
        - universal-java-1.6
      - GEM PATHS:
         - C:/jruby-1.4.0RC1/lib/ruby/gems/1.8
      - GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :benchmark => false
         - :backtrace => false
         - :bulk_threshold => 1000
         - "install" => "--env-shebang"
         - "update" => "--env-shebang"
      - REMOTE SOURCES:
         - http://gems.rubyforge.org/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      相关资源
      最近更新 更多