2010-01-07 55 views
4

我似乎無法找到在Jruby中使用java類的當前語法。 這link text文章列表:適用於需要java和包括java類的jruby語法

include Java 
include 'java' 
require 'java' 

爲有效的選擇,雖然它說的最後一個選項是預先1.0並不起作用。
Jruby Wiki但表示使用require 'java'

而對於包括我見過

MyClass = Java::some.package.MyClass 
include_class Java::some.package.MyClass 
include_class 'some.package.MyClass' 
java_import Java::some.package.MyClass 

有一個首選的方法類?

目前我得到一些「重新定義X」的消息,因爲我有一些與我的ruby類相同的java類。保留java命名空間的最佳方法是什麼,所以我沒有得到這些,並且如果我從不使用這兩個ruby/java類,那麼是否存在任何問題(除了明顯的Java類先於ruby類)相同的文件?

回答

1

我喜歡

require 'java' 
java_import java.lang.System 

我認爲require 'java'的選擇是不是進口和僅僅是個人喜好。另一方面,由於this bug reportJRubyWiki表示java_import是優選的。

針對Java和JRuby類之間的名稱衝突。爲了代碼可讀性或爲了維護目的,我建議避免使用2個不同類的相同名稱,除非你打算重新打開它。

更新:你確定錯誤'重定義X ...'是由於您的Java和JRuby類具有相同的名稱嗎?我通常會得到這個錯誤,因爲我多次使用相同的Java類(有時在不同的地方,有時我多次加載相同的文件)。

+0

嗯...沒想過,我會檢查出來,thx – brad 2010-01-13 16:15:56

+0

雅它似乎是衝突。當我實例化一個包含一堆java類的對象時(只有一次),我得到這個消息。我有一個紅寶石「供應商」類,我還包括一個「new.my_app.Supplier」java類與include_class – brad 2010-01-13 16:29:40

1

就個人而言,我總是用require 'java'

如果您有任何命名空間衝突,我建議不包括或導入,但指定完全限定類名,如

my_instance = Java::JavaUtil::Date.new

...其中Java::是所有Java類頂層模塊,JavaUtil::是該類我想,在適當的情況下完整的包名和堵塞在一起,Date是實際的類名。