java_import уже инициализированная константа - PullRequest
1 голос
/ 15 ноября 2011

Я только начал использовать 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, но я все еще получаю предупреждение, любую помощь ??

Я узнал, что это связано со следующим билетом JRubyищем в object.rb: http://jira.codehaus.org/browse/JRUBY-3453

1 Ответ

7 голосов
/ 15 ноября 2011

Мне кажется, это разумное предупреждение, поскольку в 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]
...