Syntax 正确的jruby语法,用于要求java并包括java类

Syntax 正确的jruby语法,用于要求java并包括java类,syntax,jruby,Syntax,Jruby,我似乎找不到在Jruby中使用java类的当前语法。 本文列出了: include Java include 'java' require 'java' 作为有效选项,尽管它说最后一个选项是1.0之前的版本,不起作用。 然而,用户说使用需要“java” 包括我看过的课程 MyClass = Java::some.package.MyClass include_class Java::some.package.MyClass include_class 'some.package.MyClass

我似乎找不到在Jruby中使用java类的当前语法。 本文列出了:

include Java
include 'java'
require 'java'
作为有效选项,尽管它说最后一个选项是1.0之前的版本,不起作用。
然而,用户说使用
需要“java”

包括我看过的课程

MyClass = Java::some.package.MyClass
include_class Java::some.package.MyClass
include_class 'some.package.MyClass'
java_import Java::some.package.MyClass
有没有一种更好的方法


目前我收到一些“重新定义X”的消息,因为我有几个java类与我的ruby类同名。保留java名称空间的最佳方法是什么,这样我就不会得到这些,如果我从不在同一个文件中使用这两个ruby/java类,那么这种重新定义是否有任何问题(除了明显的java类先例ruby类之外)?

个人而言,我总是使用
要求“java”

如果名称空间发生冲突,我建议不要包含或导入,而是指定完全限定的类名,例如

my_instance=Java::JavaUtil::Date.new

…其中,
Java::
是所有Java类的顶级模块,
JavaUtil::
是我想要的类的完整包名,在适当的情况下,并挤在一起,
Date
是实际的类名。

我更喜欢

require 'java'
java_import java.lang.System
我认为选择
require'java'
并不重要,只是个人偏好。另一方面,由于以下原因,Said
java_import
是首选

Java和JRuby类之间的名称冲突。出于代码可读性或维护目的,我建议避免对两个不同的类使用相同的名称,除非您打算重新打开它


更新:您确定“重定义X…”错误是由Java和JRuby类的名称相同引起的吗?我通常会出现这个错误,因为我多次导入同一个java类(有时在不同的地方,有时我多次加载同一个文件)。

ya它似乎发生冲突。当我实例化一个包含大量java类的对象时(仅一次),我得到了这个消息。我有一个ruby“Supplier”类,还包括一个带有include_类的“new.my_app.Supplier”java类