2016-02-26 44 views
2

我們的應用程序是一個RoR應用程序,目前使用JRuby版本1.7.22和JRE 8_65。我們的應用程序是本地解決方案,因此我們使用JRuby將應用程序託管在目標Windows Server 2012 R2系統上的JVM上。我們編譯我們的Ruby代碼,使用JRuby 9.0.5.0無法加載編譯的ruby文件

jruby -S jrubyc 

這需要在.RB文件並將其編譯爲.class文件。在原始的.rb中,它會像類似的那樣加載到類文件中。

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

這一切都在JRuby 1.7.22

作品現在,我們要更新JRuby中9.0.5.0,但遇到了一些問題,當涉及到部署我們的應用程序。基本上,上面的代碼名爲.rb文件裏說行不工作了,並試圖運行耙分貝時,我們得到的錯誤:設置

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替換負載

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。

謝謝。

回答

0

可能是相同的問題https://github.com/jruby/jruby/issues/3651

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

以來,錯誤的是稍有不同,你應該考慮與快照和複製,如果它失敗(可能與Windows相關),一步一步的複製可能會加速解決問題。

的JRuby -Xaot.loadClasses =真

這是沒有必要與鶯

但我得到一個警告說,aot.LoadClasses無法識別。即使我看到它在屬性當我鍵入

嗯,你能重現這與一個空的腳本,沒有JRUBY_OPTS

我已經做了很多關於此的研究,並且可能已經在網上查看了關於此的所有內容。任何輸入將不勝感激。

你可能想嘗試尋找到下一次:)問題或考慮讓一些支持

有什麼我失蹤?我不完全熟悉Java。

你不應該錯過任何東西 - 它不是Java問題...