希望有人能帮忙。我正在尝试从游戏2.4升级到2.5。升级之后,javacontroller类中出现错误。其中一个错误显示
[错误]/play-2-js-2.5/app/controllers/javacontroller。java:87:java.util.concurrent.completionstage无法转换为play.libs.f.promise[error]ws.url(“http://example.com“”。get()
看起来wsreponse在升级到2.5时可能已经被弃用了。我试图在87行用completionstage替换f.promisehttps://github.com/btgrant-76/play-2-java-scala-java-8-async-comparison/blob/6a85cf31cfb804ef20bacf8e14d30ce46cc9307c/app/controllers/javacontroller.java#l87 但得到同样的错误。我在google上搜索了很长一段时间,找到了一些关于依赖注入的主题,但是没有任何例子。任何例子和/或从这里到哪里都会很好。
1条答案
按热度按时间envsm3lx1#
如果你换了
具有
但仍然得到相同的错误,那么要检查的内容包括:
在重新编译之前是否保存源代码?如果
F.Promise
在错误消息中提到,但在代码中没有出现,这是可疑的。在游戏2.5中,WSResponse.get
有签名吗java.util.concurrent.CompletionStage<WSResponse> get()
所以呢F.Promise
不应该从那里来。参考javadoc。检查类路径中的playjar版本。如果您正在从2.4转换到2.5,那么您可能仍然有依赖项,这些依赖项将play2.4jar作为可传递的依赖项。如果您不使用ide,ide应该为您显示类路径,那么可以使用类似这样的工具来查看依赖项。
编辑
根据您的评论中给出的错误消息,您正在导入错误的
WSResponse
类,因为您混合了java和scala API。看起来你在导入play.api.libs.ws.WSResponse
而不是play.libs.ws.WSResponse
(注意api
作为包的一部分,这表示scalaapi)。