从Java

时间:2016-01-11 12:20:59

标签: jruby

jruby 1.7.23(1.9.3p551)2015-11-24 f496dd5关于Java HotSpot(TM)64位服务器VM 1.7.0_79-b15 + jit [Windows 7-amd64]

我在我的脚本容器中运行一个scriptlet,如下所示:

(RubyObject) ro = (RubyObject)container.runScriptlet(org.jruby.embed.PathType.RELATIVE,"example.rb");

其中container的类型为ScriptingContainer。 “局部变量行为”设置为“瞬态”。

文件example.rb包含以下行:

foo='xxx'
$bar='yyy'
'zzz'

我可以从Java端检索值'zzz',因为它是从runScriptlet显式返回的。我还可以使用

检索$ bar的值
container.get("$bar")

有没有办法检索foo的值? container.get("foo")返回空指针。

我还尝试将局部变量行为更改为“持久”,但结果仍然相同。

1 个答案:

答案 0 :(得分:0)

我认为你已经使用过这个 ScriptingContainer(LocalVariableBehavior.PERSISTENT)但这必要意味着你已经可以访问这个scriptContainer中的大部分内容。

也许,我们可以稍微修改你的代码并尝试使用解析。请参阅example 4。它可能会启发你。希望这会有所帮助。