首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确调用GroovyScriptEngine?

如何正确调用GroovyScriptEngine?
EN

Stack Overflow用户
提问于 2017-06-25 11:14:28
回答 2查看 2.1K关注 0票数 0

我正在测试Groovy,但我想不出如何正确调用GroovyScriptEngine。它总是在下面产生一个错误。

org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack

Song.Groovy

代码语言:javascript
复制
class Song {

 def args;
{ 
  println "Song has been called." + args;
 }



 String getArtist(){    
    return "sdfsdf";
 }

 public String toString(){
    return "Hey!";
 }

 }

Java主->

代码语言:javascript
复制
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变量也产生空..。

该怎么办?

EN

回答 2

Stack Overflow用户

发布于 2017-06-25 19:56:59

你在加载一个类!

如果您想测试您的类,请在Song.groovy的末尾尝试如下所示:

代码语言:javascript
复制
// Instantiate an object of your class and use some methods!
def song = new Song()
println song.getArtist();

当你跑的时候

代码语言:javascript
复制
gse.run("Song.groovy", binding);

您基本上是在加载您的类,但您没有使用它做任何事情。

参见下面的示例在这里

票数 2
EN

Stack Overflow用户

发布于 2017-06-26 20:33:51

(代表“任择议定书”张贴):

工作代码:

Test1.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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);
   } 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44745791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档