java.lang.NullPointerException:在java中运行Groovy时无法调用方法

java.lang.NullPointerException:在java中运行Groovy时无法调用方法,java,groovy,Java,Groovy,我第一次使用Groovy和Java,并且在运行我的简单主项目时不断出现异常 例外情况: 线程“main”java.lang.NullPointerException中出现异常:无法对null对象调用方法sell() 类应用程序Java: Groovy文件: 类别DSL: 发现问题,TradeDsl buy,sell,from need to return TradeDsl在您的trades1文件中buy和sell都有两个数量,但您的DSL只为sell指定了一个数量(但为buy指定了两个)。您好,

我第一次使用Groovy和Java,并且在运行我的简单主项目时不断出现异常

例外情况: 线程“main”java.lang.NullPointerException中出现异常:无法对null对象调用方法sell()

类应用程序Java: Groovy文件: 类别DSL:
发现问题,TradeDsl buy,sell,from need to return TradeDsl

在您的
trades1
文件中
buy
sell
都有两个数量,但您的DSL只为
sell
指定了一个数量(但为
buy
指定了两个)。您好,谢谢这是一个问题,但不是导致NPE的问题,问题是TradeDsl购买、出售,从需要返回TradeDsl
public void start() throws CompilationFailedException, IOException {

    File trades = uploadGroovyScript();

    Binding binding = new Binding();
    GroovyShell shell = new GroovyShell(binding);
    shell.evaluate(trades);
    TradeDsl tradeDsl = new TradeDsl();
    Closure c = (Closure) binding.getVariable("trades1"); 
    c.setDelegate(tradeDsl);
    c.call();
}
 trades1 = {
            buy 100,200 from "MSFT" 
            buy 1000,200 from "APPL" 
            buy 500,200 from "VMW" 
            sell 50,200 from "MSFT" 
            buy 1200,200 from "MSFT" 
            sell 200,200 from "VMW" 
            buy 1200,200 from "APPL" 
          }
public void buy(int quantity1 , int quantity2) {
    System.out.println("Buying " + quantity1 + " or " + quantity2);
}

public void sell(int quantity1) {
    System.out.println("Selling " + quantity1);
}

public void from(String epic) {
    System.out.println("from " + epic);
}