更新到 JRUBY-1.7.4 有加载问题



我有一个jruby项目,有几个自己编写的gem(带有jars的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! - 活动支持的依赖项.rb中缺少方法,我用GitHub的提示修复了该方法
  2. 加载问题: 加载错误: 加载错误: dibta-gui -- java.lang.ArrayIndexOutOfBounds异常: 3需要在org/jruby/RubyKernel.java:1054需要/home/frank/.rvm/rubies/jruby-1.7.4/lib/ruby/shared/rubygems/custom_require.rb:60(根) 在 -e:1
  3. 当我使用 -d 运行 jruby 时,我得到了一个带有堆栈跟踪的长列表,其中我只发布了几行:
    1. java.lang.ClassNotFoundException: rubygems.defaults.OperatingSystemService at java.net.URLClassLoader$1.run(URLClassLoader.java:366)......
    2. java.lang.ClassNotFoundException: Dibta-guiService at java.net.URLClassLoader$1.run(URLClassLoader.java:366)....
    3. java.lang.NoSuchMethodError: org.jruby.javasupport.util.RuntimeHelpers.preLoad(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;Z)Vat dibta_gui.load(dibta_gui.rb)....
    4. java.lang.ArrayIndexOutOfBoundsException: 3at org.jruby.runtime.scope.ManyVarsDynamicScope.setValueDepthZero(ManyVarsDynamicScope.java:147)....

我正在使用 rvm 在红宝石之间切换。请帮忙!

弗兰克

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

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

也检查这个答案

更新到 jruby-1.7.13 后,需要 JRUBY 中的自制宝石失败

最新更新