我正在尝试对另一台服务器进行简单的,未经身份验证的WS调用 我们的内部网络,但我没有任何WS调用 获得关于
的NoSuchMethodExceptionAsyncHttpClientConfig $ Builder.setConnectionTimeoutInMs(I)AsyncHttpClientConfig $生成器;
[error] Uncaught exception when running app.controllers.WSSuite:
java.lang.NoSuchMethodError: com.ning.http.client.AsyncHttpClientConfig$Builder.setConnectionTimeoutInMs(I)Lcom/ning/http/client/AsyncHttpClientConfig$Builder;
sbt.ForkMain$ForkError: com.ning.http.client.AsyncHttpClientConfig$Builder.setConnectionTimeoutInMs(I)Lcom/ning/http/client/AsyncHttpClientConfig$Builder;
at play.api.libs.ws.ning.NingAsyncHttpClientConfigBuilder.configureWS(NingAsyncHttpClientConfigBuilder.scala:45)
at play.api.libs.ws.ning.NingAsyncHttpClientConfigBuilder.build(NingAsyncHttpClientConfigBuilder.scala:28)
at app.controllers.WSSuite.<init>(NotificationActionsSuite.scala:110)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at java.lang.Class.newInstance(Class.java:442)
at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:641)
at sbt.ForkMain$Run$2.call(ForkMain.java:294)
at sbt.ForkMain$Run$2.call(ForkMain.java:284)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
...
libraryDependencies ++= Seq(
"org.postgresql" % "postgresql" % "9.3-1100-jdbc4",
"org.flywaydb" % "flyway-sbt" % "3.0",
"org.dbunit" % "dbunit" % "2.5.0" % "test",
"org.scalatest" %% "scalatest" % "2.2.1" % "test",
"org.scalatestplus" %% "play" % "1.2.0" % "test",
"org.jdom" % "jdom" % "1.1.2" notTransitive(),
"org.pac4j" % "play-pac4j_scala2.11" % "1.4.0",
"org.pac4j" % "pac4j-http" % "1.7.0",
"jp.t2v" %% "play2-auth" % "0.13.2",
"jp.t2v" %% "play2-auth-test" % "0.13.2" % "test",
"javax.jms" % "javax.jms-api" % "2.0.1",
"org.apache.activemq" % "activemq-all" % "5.11.1",
"io.gatling.highcharts" % "gatling-charts-highcharts" % "2.1.7" % "test",
"io.gatling" % "gatling-test-framework" % "2.1.7" % "test",
jdbc,
anorm,
ws
)
lazy val root = (project in file("."))
.enablePlugins(PlayScala)
...
...
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.10") // It works from Play 2.3.2
...
import play.api.libs.ws.WS
import scala.concurrent.ExecutionContext.Implicits.global
import org.scalatestplus.play.{OneAppPerSuite, PlaySpec}
import play.api.Play.current
class WSSuite extends PlaySpec with OneAppPerSuite
{
"WS library" should {
"Hit an external web service" in {
WS.url("http://www.google.com").get().map { response =>
println("Body: " + response.body)
}
}
}
}
我不知道如何解决这个问题,因为Play Docs表明了这一点 应该工作。
相关文档:https://www.playframework.com/documentation/2.3.x/ScalaWS
答案 0 :(得分:2)
由于AsyncHttpClient版本存在冲突,因此无法在同一项目中使用Play 2.3和Gatling 2.1。
Play 2.3需要AHC 1.8,而Gatling 2.1需要AHC 1.9。
升级到Play 2.4,升级AHC依赖项,或者将Gatling测试移动到一个单独的项目或模块,其中类路径不会冲突。