播放 2.5 错误 - CompletionStage<WSResponse> 无法转换为 F.Promise<WSResponse>
Play 2.5 error - CompletionStage<WSResponse> cannot be converted to F.Promise<WSResponse>
希望有人能提供帮助。我正在尝试从 Play 2.4 升级到 2.5。升级后,我在 JavaController class 中遇到错误。其中一个错误显示
[error] /Play-2-JS-2.5/app/controllers/JavaController.java:87:
java.util.concurrent.CompletionStage cannot
be converted to play.libs.F.Promise
[error] WS.url("http://example.com").get()
似乎在升级到 2.5 时 WSReponse 可能已被弃用。我试图在第 87 行 https://github.com/btgrant-76/Play-2-Java-Scala-Java-8-Async-Comparison/blob/6a85cf31cfb804ef20bacf8e14d30ce46cc9307c/app/controllers/JavaController.java#L87 上用 CompletionStage 替换 F.Promise,但得到了同样的错误。我在谷歌上搜索了很长一段时间,发现了有关依赖注入的主题,但是没有任何示例。任何例子 and/or 从这里到哪里都会很棒。
如果你更换了
final F.Promise<WSResponse> responsePromise = WS.url("http://example.com").get();
和
final CompletionStage<WSResponse> responsePromise = WS.url("http://example.com").get();
仍然得到同样的错误,然后要检查的事情包括:
重新编译前是否保存源代码?如果 F.Promise
在错误消息中提到但没有出现在代码中,那就有问题了。在 Play 2.5 中,WSResponse.get
具有签名 java.util.concurrent.CompletionStage<WSResponse> get()
,因此 F.Promise
不应该来自那里。请参阅 the javadoc 以供参考。
检查 class 路径中的 Play jar 版本。如果您从 2.4 转换到 2.5,您可能仍然有依赖项将 Play 2.4 jar 作为传递依赖项引入。如果您没有使用 IDE,它应该为您显示 class 路径,请使用工具 like this one 查看依赖项。
编辑
根据您评论中给出的错误消息,您导入了错误的 WSResponse
class,因为您混用了 Java 和 Scala API .看起来您正在导入 play.api.libs.ws.WSResponse
而不是 play.libs.ws.WSResponse
(请注意包的 api
部分,这表示 Scala API)。
希望有人能提供帮助。我正在尝试从 Play 2.4 升级到 2.5。升级后,我在 JavaController class 中遇到错误。其中一个错误显示
[error] /Play-2-JS-2.5/app/controllers/JavaController.java:87: java.util.concurrent.CompletionStage cannot be converted to play.libs.F.Promise [error] WS.url("http://example.com").get()
似乎在升级到 2.5 时 WSReponse 可能已被弃用。我试图在第 87 行 https://github.com/btgrant-76/Play-2-Java-Scala-Java-8-Async-Comparison/blob/6a85cf31cfb804ef20bacf8e14d30ce46cc9307c/app/controllers/JavaController.java#L87 上用 CompletionStage 替换 F.Promise,但得到了同样的错误。我在谷歌上搜索了很长一段时间,发现了有关依赖注入的主题,但是没有任何示例。任何例子 and/or 从这里到哪里都会很棒。
如果你更换了
final F.Promise<WSResponse> responsePromise = WS.url("http://example.com").get();
和
final CompletionStage<WSResponse> responsePromise = WS.url("http://example.com").get();
仍然得到同样的错误,然后要检查的事情包括:
重新编译前是否保存源代码?如果
F.Promise
在错误消息中提到但没有出现在代码中,那就有问题了。在 Play 2.5 中,WSResponse.get
具有签名java.util.concurrent.CompletionStage<WSResponse> get()
,因此F.Promise
不应该来自那里。请参阅 the javadoc 以供参考。检查 class 路径中的 Play jar 版本。如果您从 2.4 转换到 2.5,您可能仍然有依赖项将 Play 2.4 jar 作为传递依赖项引入。如果您没有使用 IDE,它应该为您显示 class 路径,请使用工具 like this one 查看依赖项。
编辑
根据您评论中给出的错误消息,您导入了错误的 WSResponse
class,因为您混用了 Java 和 Scala API .看起来您正在导入 play.api.libs.ws.WSResponse
而不是 play.libs.ws.WSResponse
(请注意包的 api
部分,这表示 Scala API)。