【问题标题】:Failing to use play framework app injector to inject WSClient未能使用播放框架应用程序注入器注入 WSClient
【发布时间】:2017-12-17 22:14:26
【问题描述】:

我正在使用 play 2.6.0 和 scala 2.11.8

我一直在使用 play 的 WSClient,但使用相同的配置没有问题:

application.conf:

play {
  ws.timeout.connection = 600000
  ws.timeout.idle = 600000
  ws.timeout.request = 600000
}

现在我需要在我的测试中注入它的实例,因为我的一个类将它作为依赖项。

看起来像这样:

class TestClass extends FreeSpec with OneAppPerSuite {


  implicit lazy val materializer: Materializer = app.materializer

  // this line is failing
  val ws: WSClient = app.injector.instanceOf[WSClient]

  ..
}

此时测试已经失败并出现以下错误:

1) 注入构造函数时出错,java.lang.NumberFormatException: 格式错误 600000 在 play.api.libs.ws.ahc.AsyncHttpClientProvider.(AhcWSModule.scala:40) 在 play.api.libs.ws.ahc.AsyncHttpClientProvider.class(AhcWSModule.scala:39) 同时定位 play.api.libs.ws.ahc.AsyncHttpClientProvider 而 定位 play.shaded.ahc.org.asynchttpclient.AsyncHttpClient 对于 play.api.libs.ws.ahc.AhcWSClientProvider.(AhcWSModule.scala:203) 的第一个参数 在 play.api.libs.ws.ahc.AhcWSClientProvider.class(AhcWSModule.scala:203) 同时定位 play.api.libs.ws.ahc.AhcWSClientProvider 而 定位 play.api.libs.ws.WSClient

原因:

java.lang.NumberFormatException: 格式错误 600000

有人知道为什么会这样吗?没有找到任何可以在线帮助我的东西,我尝试了...

【问题讨论】:

  • 最近有人在here 上提出了完全相同的问题。如果那个人有答案,你的将是重复的

标签: java scala playframework playframework-2.0 playframework-2.6


【解决方案1】:

我今天遇到了这个问题,发现它不是this issue 的重复,而是属性格式错误。从 Play 2.6 开始,必须使用值和单位(即 10000 毫秒)指定 WS 属性。因此,您的属性将更改为更像以下内容:

play.ws.connection.timeout = 10000ms

【讨论】:

    猜你喜欢
    • 2015-03-08
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 2017-12-17
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多