我正在测试Groovy,但我想不出如何正确调用GroovyScriptEngine。它总是在下面产生一个错误。
org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack
Song.Groovy
class Song {
def args;
{
println "Song has been called." + args;
}
String getArtist(){
return "sdfsdf";
}
public String toString(){
return "Hey!";
}
}Java主->
String[] paths = { "C:\\Users\\User\\workspace\\GroovyTest\\src\\groovy" };
GroovyScriptEngine gse = new GroovyScriptEngine(paths);
Binding binding = new Binding();
Object s = "Default...";
binding.setVariable("args", s);
gse.run("Song.groovy", binding);args变量也产生空..。
该怎么办?
发布于 2017-06-25 19:56:59
你在加载一个类!
如果您想测试您的类,请在Song.groovy的末尾尝试如下所示:
// Instantiate an object of your class and use some methods!
def song = new Song()
println song.getArtist();当你跑的时候
gse.run("Song.groovy", binding);您基本上是在加载您的类,但您没有使用它做任何事情。
参见下面的示例在这里
发布于 2017-06-26 20:33:51
(代表“任择议定书”张贴):
工作代码:
Test1.java
import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
public class Test1 {
public static void main(String[] args) throws Exception {
String[] paths = { "C:\\Users\\User\\workspace\\GroovyTest\\src\\groovy" };
GroovyScriptEngine gse = new GroovyScriptEngine(paths);
Binding binding = new Binding();
binding.setVariable("args", "Test Data");
String result = (String) gse.run("File1.groovy", binding);
System.out.println("Groovy Result: " + result);
}
}File1.groovy
package groovy;
class Greeter {
String sayHello(String data) {
def greet = data;
return greet
}
}
static void main(String[] args) {
def greeter = new Greeter()
return greeter.sayHello(args);
} https://stackoverflow.com/questions/44745791
复制相似问题