Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用PlayFramework 2.4.2的ProvisionException_Java_Playframework_Dependency Injection_Playframework 2.4 - Fatal编程技术网

Java 使用PlayFramework 2.4.2的ProvisionException

Java 使用PlayFramework 2.4.2的ProvisionException,java,playframework,dependency-injection,playframework-2.4,Java,Playframework,Dependency Injection,Playframework 2.4,我正在将一个项目从Play 2.2.4迁移到Play 2.4.2,我遇到了一个我无法理解和解决的异常 Unexpected exception ProvisionException: Unable to provision, see the following errors: 1) Error injecting constructor, java.lang.NullPointerException at controllers.Application.<init>(Appl

我正在将一个项目从Play 2.2.4迁移到Play 2.4.2,我遇到了一个我无法理解和解决的异常

Unexpected exception

ProvisionException: Unable to provision, see the following errors:

1) Error injecting constructor, java.lang.NullPointerException
  at controllers.Application.<init>(Application.java:33)
  while locating controllers.Application
    for parameter 1 at router.Routes.<init>(Routes.scala:36)
  while locating router.Routes
  while locating play.api.inject.RoutesProvider
  while locating play.api.routing.Router

1 error
build.sbt
文件包括必要的配置

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs
)

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator

哪些内容可能会丢失或出错?

此行会导致空指针:
ws.url(“https://...");应用程序
类时,code>ws为空。此外,将
请求
作为控制器字段不是线程安全的。将代码更改为以下内容:

public class Application extends Controller {

    private WSClient ws;

    @Inject
    public Application(WSClient ws) {

        this.ws = ws;
        WSRequest request = this.ws.url("https://...");

        ...
    }
}

谢谢你,这解决了我的问题!我想知道,如果播放文档不起作用,为什么会这样声明:
WSRequest-request=ws.url(“http://example.com");此行应属于控制器方法。
public class Application extends Controller {

    private WSClient ws;

    @Inject
    public Application(WSClient ws) {

        this.ws = ws;
        WSRequest request = this.ws.url("https://...");

        ...
    }
}