play 2.5错误-completionstage< wsresponse>无法转换为f.promise< wsresponse>

3zwjbxry  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(629)

希望有人能帮忙。我正在尝试从游戏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上搜索了很长一段时间,找到了一些关于依赖注入的主题,但是没有任何例子。任何例子和/或从这里到哪里都会很好。

envsm3lx

envsm3lx1#

如果你换了

final F.Promise<WSResponse> responsePromise = WS.url("http://example.com").get();

具有

final CompletionStage<WSResponse> responsePromise = WS.url("http://example.com").get();

但仍然得到相同的错误,那么要检查的内容包括:
在重新编译之前是否保存源代码?如果 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.WSResp‌​onse 而不是 play.libs.ws.WSResp‌​onse (注意 api 作为包的一部分,这表示scalaapi)。

相关问题