0

我有一个 jruby 项目,其中包含几个自写的 gem(带有 jars 的 Java 代码和编译为 *.class 的 Ruby 代码)与在 jdk1.7.0_07 或 java- 等多个 java jvm 上运行的 jruby-1.7.0(语言级别 1.9)完美配合7-甲骨文。

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

  1. 责备文件!-activesupport 的 dependencies.rb 中缺少方法,我通过 GitHub 的提示修复了该方法
  2. 加载问题:LoadError: 加载错误: dibta-gui -- java.lang.ArrayIndexOutOfBoundsException: 3 require at org/jruby/RubyKernel.java:1054 require at /home/frank/.rvm/rubies/jruby-1.7.4/lib /ruby/shared/rubygems/custom_require.rb:60 (root) at -e:1
  3. 当我使用 -d 运行 jruby 时,我得到一个带有 stacktrace 的长列表,其中我只发布了一些行:
    1. java.lang.ClassNotFoundException: ruby​​gems.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)V 在 dibta_gui.load(dibta_gui.rb)....
    4. java.lang.ArrayIndexOutOfBoundsException: 3 at org.jruby.runtime.scope.ManyVarsDynamicScope.setValueDepthZero(ManyVarsDynamicScope.java:147)....

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

坦率

4

1 回答 1

0

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

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

还要检查这个答案

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

于 2013-09-13T12:14:07.420 回答