我正在用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}”之类的字符串接收脚本中的值可以正常工作。
我知道它必须以某种方式工作,我将不胜感激任何帮助或其他建议!
答案 0 :(得分:1)
output = ${input}
无效groovy
尝试:
output = input