从脚本调用groovy方法

时间:2014-01-29 15:12:57

标签: groovy scripting

我正在用groovy编写一个程序,我想让它运行一个动态更改变量的脚本。该脚本应该用它的变量执行一个方法。此方法位于运行脚本的程序中。

该脚本将包含以下内容:

// getAttribute is a method in my main program, the program which also runs the script
value = getValue("java.lang:type=OperatingSystem", "FreePhysicalMemorySize")

// do something with the value
if (value > 9000) { output = "ERROR" }

// the same thing maybe a few more times
value = getValue(...

我希望尽可能简单。

我正在使用这些示例:http://groovy.codehaus.org/Embedding+Groovy

我已经尝试使用GroovyScriptEngine,但似乎脚本只接受字符串作为输入值。如果我可以移交方法指针,那就太棒了。

试图交出这样的整数:

def roots = 'PATH\\script.groovy'
def groscreng = new GroovyScriptEngine(roots)
def binding = new Binding()
def input  = 42
binding.setVariable("input", input)
groscreng.run("script.groovy", binding)
println binding.getVariable("output")

使用此script.groovy

output = ${input}

导致此错误:

Caught: groovy.lang.MissingMethodException: No signature of method: script.$() is applicable for argument types: (script$_run_closure1) values: [script$_run_closure1@fcf50]
Possible solutions: is(java.lang.Object), run(), run(), any(), any(groovy.lang.Closure), use([Ljava.lang.Object;)

以“$ {input}”之类的字符串接收脚本中的值可以正常工作。

我知道它必须以某种方式工作,我将不胜感激任何帮助或其他建议!

1 个答案:

答案 0 :(得分:1)

output = ${input}

无效groovy

尝试:

output = input