java_import已经初始化了常量

Ada*_*ner 1 ruby java dependencies jruby dependency-management

我刚开始使用JRuby并创建了一个小测试文件:

require 'java'
java_import java.io.File

f = File.new ARGV[0]
Run Code Online (Sandbox Code Playgroud)

当我像这样运行程序时: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

Jac*_*son 7

对我来说似乎是一个合理的警告,因为Ruby已经有了一个File类(即常量"File"已经被初始化以引用Ruby File类).

我自己,我可能会跳过导入,只是做

require 'java'
f = java.io.File.new ARGV[0]
Run Code Online (Sandbox Code Playgroud)

这应该工作,并将消除名称冲突.

你也可以

require 'java'
java_file = java.io.File
f = java_file.new ARGV[0]
Run Code Online (Sandbox Code Playgroud)

要么

module JavaIO
   include_package "java.io"
end

f = JavaIO::File.new ARGV[0]
Run Code Online (Sandbox Code Playgroud)