【问题标题】:JRuby 9.0.5.0 cannot load compiled ruby filesJRuby 9.0.5.0 无法加载已编译的 ruby​​ 文件
【发布时间】:2016-03-01 17:47:48
【问题描述】:

我们的应用程序是一个 RoR 应用程序,目前使用 JRuby 版本 1.7.22 和 JRE 8_65。我们的应用程序是一个本地解决方案,因此我们使用 JRuby 在目标 Windows Server 2012 R2 系统的 JVM 上托管我们的应用程序。我们编译我们的 ruby​​ 代码,使用

jruby -S jrubyc

这会获取 .rb 文件并将其编译为 .class 文件。在原始 .rb 中,它加载到类文件中,如下所示。

load __FILE__.sub(/\.rb$/, ".class")

这一切都适用于 JRuby 1.7.22

现在,我们想将 JRuby 更新到 9.0.5.0,但是在部署我们的应用程序时遇到了一些问题。基本上,上面 .rb 文件中的那行代码不再工作了,我们在尝试运行 rake db:setup 时遇到错误

rake aborted!
LoadError: C:/appname/app/models/app_attribute.class is not compiled Ruby; use java_import to load normal classes          
C:/appname/app/models/app_attribute.rb:1:in `<top>'
C:/appname/db/seeds.rb:10:in `<top>'
C:/appname/db/seeds.rb:9:in `block in (root)'
Tasks: TOP => db:setup => db:seed
(See full trace by running task with --trace)

太好了。所以我用 java_import 替换 load

 rake aborted!
 ArgumentError: not a valid Java identifier:         C:/appname/app/models/app_attribute.class
 uri:classloader:/jruby/java/core_ext/object.rb:43:in `block in       java_import'
 uri:classloader:/jruby/java/core_ext/object.rb:34:in `java_import'
 C:/appname/app/models/app_attribute.rb:1:in `<top>'
 C:/appname/db/seeds.rb:10:in `<top>'
 C:/appname/db/seeds.rb:9:in `block in (root)'
 Tasks: TOP => db:setup => db:seed
 (See full trace by running task with --trace)

无论我尝试什么,仍然无法正常工作。我看了这个帖子:https://github.com/jruby/jruby/issues/3018 我试图传递参数

jruby -Xaot.loadClasses=true

但我收到一条警告说 aot.LoadClasses 无法识别。即使我在输入时在属性中看到它

jruby -Xproperties

我已经对此进行了大量研究,并且可能已经查看了互联网上与此相关的所有内容。任何输入将不胜感激。有什么我想念的吗?我不完全擅长 Java。

谢谢。

【问题讨论】:

    标签: java ruby-on-rails jruby


    【解决方案1】:

    可能和https://github.com/jruby/jruby/issues/3651是同一个问题

    这意味着您需要等待 9.1 或使用快照 http://ci.jruby.org/

    由于错误略有不同,您应该考虑使用快照进行复制,如果失败(可能与 Windows 相关),则逐步复制可能会加快解决问题的速度。

    jruby -Xaot.loadClasses=true

    Warbler 不需要这样做

    但我收到一条警告说 aot.LoadClasses 无法识别。即使我在输入时在属性中看到它

    嗯,你能用一个空脚本而不是JRUBY_OPTS 重现这个吗?

    我已经对此进行了大量研究,并且可能已经查看了互联网上有关此的所有内容。任何输入将不胜感激。

    您可能想下次尝试调查该问题 :) 或考虑获得一些支持

    有什么我想念的吗?我不完全擅长 Java。

    您不应该遗漏任何东西 - 这不是 Java 问题...

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 2016-05-12
      • 1970-01-01
      相关资源
      最近更新 更多