【发布时间】: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