我刚开始使用JRuby而且我创建了一个小测试文件:
require 'java'
java_import java.io.File
f = File.new ARGV[0]
当我像这样运行程序时:jruby test.rb file.txt
我收到以下警告:
/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
f
的类实际上是java File类,但我仍然得到警告,任何帮助??
通过查看object.rb,我发现这与以下JRuby票证有关: http://jira.codehaus.org/browse/JRUBY-3453
答案 0 :(得分:7)
对我来说似乎是一个合理的警告,因为Ruby已经有了一个File类(即常量“File”已经初始化以引用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]