Scala独立应用使用WSClient报错:ning包不存在问题求助
问题原因
这个问题我熟!你遇到的错误是因为Play框架从2.6版本开始,对WS模块做了架构调整:原本包含在play-ws里的Ning(AsyncHttpClient)客户端实现,被单独抽成了play-ahc-ws模块。你当前只添加了play-ws依赖,它仅包含WS的API定义,没有具体的Ning实现,所以编译器找不到play.api.libs.ws.ning这个包。
解决方案
1. 补充依赖到build.sbt
在你的build.sbt里添加play-ahc-ws的依赖,它包含了Ning客户端的完整实现:
libraryDependencies += "com.typesafe.play" %% "play-ahc-ws" % "2.6.1"
保留原来的play-ws和play-json依赖即可,不需要移除。
2. 优化代码(可选但推荐)
Play 2.6开始官方推荐使用Standalone WS客户端API,它比原来的Ning专属API更简洁,也更利于后续版本迁移。你可以把代码改成这样:
import play.api.libs.ws._ import play.api.libs.ws.ahc._ import scala.concurrent.ExecutionContext.Implicits.global object WSStandaloneTest { def main(args: Array[String]) { // 用StandaloneAhcWSClient快速创建客户端 val client = StandaloneAhcWSClient() // 执行GET请求 val response = client.url("http://www.example.com").get() response.foreach(r => { println(r.body) // 请求完成后关闭客户端 client.close() }) } }
如果坚持要用原来的Ning相关代码,只要添加了play-ahc-ws依赖,原来的导入和客户端创建逻辑也能正常工作,但Standalone API是官方主推的方向。
3. 重新编译项目
执行sbt clean compile命令,让sbt重新下载新依赖并编译代码,错误就会消失啦。
内容的提问来源于stack exchange,提问作者sge
相关产品推荐
相关产品推荐

