Java 如果我没有';你不跟它分享吗?

Java 如果我没有';你不跟它分享吗?,java,ruby,jruby,Java,Ruby,Jruby,如果我在Java应用程序中有一个Ruby脚本,由JRuby的ScriptingContainer执行,Ruby脚本是否能够访问或使用我在Java应用程序中定义的类(如果我没有与该脚本共享任何内容) 我的意思是分享: ruby = new ScriptingContainer(LocalVariableBehavior.PERSISTENT); ruby.put("main", MyClass.class); ruby.runScriptlet(readFile("Test.rb")); 如您所

如果我在
Java
应用程序中有一个
Ruby
脚本,由
JRuby
ScriptingContainer
执行,
Ruby
脚本是否能够访问或使用我在
Java
应用程序中定义的类(如果我没有与该脚本共享任何内容)

我的意思是分享:

ruby = new ScriptingContainer(LocalVariableBehavior.PERSISTENT);
ruby.put("main", MyClass.class);
ruby.runScriptlet(readFile("Test.rb"));
如您所见,我正在与
Ruby
脚本共享一个名为main的变量,其值为
MyClass.class


如果我不共享任何内容
Ruby
脚本是否仍然能够在我的应用程序中使用
MyClass

是的,如下所示:如果
MyClass
在你的类路径上/
$LOAD\u路径
,JRuby将在你导入
java\u
它时获取它。

啊,这是无法避免的?@Omega你想避免什么?将类放在类路径上?尽管类在类路径上,但避免java_导入。您必须使用
java::
前缀或
java_导入
,因为您的类位于“默认”包中,或者将您的类放在以
org
com
开头的包中,然后使用其完全限定名引用该类。