更新到jruby-1.7.4有加载问题

时间:2013-09-11 10:15:04

标签: java ruby-on-rails ruby jruby

我有一个jruby项目,有几个自编宝石(带有jar的Java代码和编译为* .class的Ruby代码),与jruby-1.7.0(语言级别1.9)完美配合,运行在几个java jvm上,如jdk1.7.0_07或java-7-oracle。

升级到jruby-1.7.4后,我遇到了几个错误。

  1. blame_file! -method在activesupport的dependencies.rb中缺少,我用hint from GitHub
  2. 修复了这个问题
  3. 加载问题:LoadError:加载错误:dibta-gui - java.lang.ArrayIndexOutOfBoundsException:3 在org / jruby / RubyKernel.java中要求:1054 需要在/home/frank/.rvm/rubies/jruby-1.7.4/lib/ruby/shared/rubygems/custom_require.rb:60 (root)at -e:1
  4. 当我使用-d运行jruby时,我得到一个包含stacktrace的长列表,其中我只发布了一些行:
    1. java.lang.ClassNotFoundException:java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)中的rubygems.defaults.OperatingSystemService ......
    2. java.lang.ClassNotFoundException:java.net.URLClassLoader $ 1.run中的Dibta-guiService(URLClassLoader.java:366)....
    3. java.lang.NoSuchMethodError:org.jruby.javasupport.util.RuntimeHelpers.preLoad(Lorg / jruby / runtime / ThreadContext; Ljava / lang / String; Z)V 在dibta_gui.load(dibta_gui.rb)....
    4. java.lang.ArrayIndexOutOfBoundsException:3 在org.jruby.runtime.scope.ManyVarsDynamicScope.setValueDepthZero(ManyVarsDynamicScope.java:147)....
  5. 我正在使用rvm在红宝石之间切换。请帮助!

1 个答案:

答案 0 :(得分:0)

尝试通过jirb单独加载gems后,我很快发现,只有我的gems没有加载,并且总是使用ArrayIndexOutOfBoundsException。我的宝石包括用rubyc编译的java * .class文件。这就是原因。我使用* .rb文件重建它们,一切正常。

有谁知道为什么没有使用jruby-1.7.4加载gem中的* .class文件?

也请查看此答案

require self made gem in jruby fails after update to jruby-1.7.13