【问题标题】:java_import already initialized constantjava_import 已经初始化的常量
【发布时间】:2011-12-29 04:41:21
【问题描述】:

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

【问题讨论】:

  • 有什么理由显式使用 Java 文件类?

标签: java ruby dependencies jruby dependency-management


【解决方案1】:

对我来说似乎是一个合理的警告,因为 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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-29
    • 2011-12-01
    • 2011-01-02
    • 2013-01-08
    • 1970-01-01
    • 2011-11-29
    • 2012-10-08
    • 1970-01-01
    相关资源
    最近更新 更多