java_import已经初始化了常量

时间:2011-11-15 03:45:23

标签: java ruby dependencies jruby dependency-management

我刚开始使用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

1 个答案:

答案 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]