Java 在play framework中调用webservice时出现NullPointer异常

Java 在play framework中调用webservice时出现NullPointer异常,java,web-services,playframework,Java,Web Services,Playframework,这个节目有什么问题吗 在2.4.3版的play framework中调用web服务时,我遇到了nullPointerException package com.enkindle.box; import javax.inject.Inject; import play.libs.ws.WSClient; /** * @author thirumal * */ public class Sample { @Inject WSClient ws; public static vo

这个节目有什么问题吗

在2.4.3版的play framework中调用web服务时,我遇到了
nullPointerException

package com.enkindle.box;

import javax.inject.Inject;

import play.libs.ws.WSClient;

/**
 * @author thirumal
 *
 */
public class Sample {

@Inject WSClient ws;   

public static void main(String[] args) {
    Sample sample = new Sample();
    sample.callAPI();
}

public void callAPI() {
    ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
}

}

问题是您的
Sample
类在依赖项注入的上下文中不可用-我假设是Guice。有几种方法可以解决这个问题,但最简单的方法是创建一个
Sample
接口,并使用Guice绑定它的实现
SampleImpl
,以便它可以用于注入的依赖项。我将假设这是从一个控制器生成的,因此您可以将
Sample
注入到您的控制器中,然后点击
callApi()
方法

控制器:

public class SampleController extends Controller {
    @Inject Sample sample;

    public Promise<Result> apiCall() {
        sample.callApi();
        return promise(() -> ok());
    }
}
以及接口实现:

public class SampleImpl implements Sample {
    @Inject WSClient ws;

    @Override
    public void callApi() {
        // ws should not be null
        ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
    }
}

参考文档:

或者他可以扩展控制器。但是根据接口编写代码是很好的。
public class SampleImpl implements Sample {
    @Inject WSClient ws;

    @Override
    public void callApi() {
        // ws should not be null
        ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
    }
}