更新到 jruby-1.7.4 时出现加载问题

Posted

技术标签:

【中文标题】更新到 jruby-1.7.4 时出现加载问题【英文标题】:update to jruby-1.7.4 with loading problems 【发布时间】:2013-09-11 10:15:03 【问题描述】:

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

升级到 jruby-1.7.4 后出现几个错误。

    责备文件! -activesupport的dependencies.rb中缺少方法,我用hint from GitHub修复 加载问题: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 (根)在 -e:1 当我使用 -d 运行 jruby 时,我得到一个带有 stacktrace 的长列表,其中我只发布了一些行:
      java.lang.ClassNotFoundException: ruby​​gems.defaults.OperatingSystemService at java.net.URLClassLoader$1.run(URLClassLoader.java:366)...... java.lang.ClassNotFoundException: Dibta-guiService at java.net.URLClassLoader$1.run(URLClassLoader.java:366).... java.lang.NoSuchMethodError: org.jruby.javasupport.util.RuntimeHelpers.preLoad(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;Z)V 在 dibta_gui.load(dibta_gui.rb).... java.lang.ArrayIndexOutOfBoundsException: 3 在 org.jruby.runtime.scope.ManyVarsDynamicScope.setValueDepthZero(ManyVarsDynamicScope.java:147)....

我正在使用 rvm 在 rubies 之间切换。请帮忙!

弗兰克

【问题讨论】:

【参考方案1】:

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

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

也检查这个答案

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

【讨论】:

以上是关于更新到 jruby-1.7.4 时出现加载问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 中页面加载时出现 Popstate

导出 .apk 文件时出现问题(无法访问数字证书 - 无法加载证书)

加载到 mySQL 时出现错误代码:1262

使用 Azure 数据工厂将数据加载到雪花时出现问题

Rails:创建/更新记录时出现 EOF 错误

ruby 基准删除超过20秒的文件(目标:jRuby 1.7.4 Ubuntu 14.04)