更新到 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: rubygems.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 包括用 rubyc 编译的 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 时出现加载问题的主要内容,如果未能解决你的问题,请参考以下文章