2010-04-25 40 views
0

如果我在ruby中實現一個類,並用jrubyc編譯它,那麼如果我用java啓動它,就不可能直接從java類調用它。如果我看到這個權利,我必須使用 org.jruby.embed...來實現一個包含類名稱和metod的包裝來調用我的ruby類。用jruby調用java的java類

如果我用jruby啓動應用程序,還必須這樣做嗎?在我目前的項目中,我用jruby完全啓動了java工作流引擎。工作流必須調用他無法找到的ruby類中的方法。

也許更容易理解:

 [ruby_class] <-----has to call----. 
              | 
jruby [ruby_start_script] --starts--> [java wfe] 
+0

您使用的是哪個版本的JRuby? – 2011-09-13 15:32:52

回答

0

我不知道如果我的理解,但需要你的代碼,你就必須需要它,讓它確保它它在你的JAVA PATH或APP路徑。例如,在你的JRuby腳本,你可以做到這一點:

require 'java' 
java_import java.lang.System 
version = System.getProperties["java.runtime.version"] 

可以調用以及Java方法,如:

java.lang.System.currentTimeMillis 

我要說的是,你讓你的類工作,Java應用程序,然後你應該把它放在你的應用程序路徑,做一個需要的Java「和java_import your.class.here

+0

我可以調用Java方法,但我無法讓Java工作流引擎調用我的ruby方法。我不確定這是一般的 - 「你不能在沒有黑客的情況下從java調用jruby。」 - 因爲我在jruby中運行java代碼。 複雜解釋... – r2p2 2010-04-25 14:34:06

0

如果我在Ruby中實現一個類和 與jrubyc比它編譯它不是 可能如果我用java啓動它,直接從java類 中調用它。

不知道我是否完全理解了這個問題,但如果您問是否可以使用jrubyc從Java類調用Jruby方法,那麼這是可能的。看看這個博客文章,其中顯示如何調用JRuby method from Java

0

IIRC,這是JRuby的最新集成之一,可能會有變化。這似乎是可能的,如in this post所述,雖然警告效率不高。