2011-11-15 1 views
1

を初期化:java_importは、すでに私はJRubyの使用を開始し、私は小さなテストファイルを作成し、一定

require 'java' 
java_import java.io.File 

f = File.new ARGV[0] 

私はそうのようなプログラムを実行すると:

/Library/Frameworks/JRuby.framework/Versions/1.6.5/lib/ruby/site_ruby/shared/builtin/javasupport/core_ext/object.rb:99 warning: already initialized constant File

jruby test.rb file.txt 私は次の警告を取得します

クラスはfですが、実際はjava Fileクラスですが、私はまだ警告を受け取ります。

私は、これはobject.rbで見ることにより、以下のJRubyのチケットに関連しているが分かった:RubyはすでにFileクラスを持っているので http://jira.codehaus.org/browse/JRUBY-3453

+0

明示的にJavaファイルクラスを使用する理由を行うことができます

? –

答えて

7

(すなわち一定の「ファイル」、私には合理的な警告のように思えますRuby Fileクラスを参照するように既に初期化されています)。

私自身、私はおそらく、インポートをスキップして、ちょうど動作するはずですし、名前の衝突を排除する

require 'java' 
f = java.io.File.new ARGV[0] 

を行うだろう。あなたはまた、

require 'java' 
java_file = java.io.File 
f = java_file.new ARGV[0] 

または

module JavaIO 
    include_package "java.io" 
end 

f = JavaIO::File.new ARGV[0] 
関連する問題