簡體   English   中英

播放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類中遇到錯誤。 錯誤之一顯示

[錯誤] /Play-2-JS-2.5/app/controllers/JavaController.java:87:java.util.concurrent.CompletionStage無法轉換為play.libs.F.Promise [錯誤] WS.url(“ http: //example.com “).get()

似乎到2.5時,WSReponse可能已被棄用。 我試圖在第87行上用CompletionStage替換F.Promise,在這里https://github.com/btgrant-76/Play-2-Java-Scala-Java-8-Async-Comparison/blob/6a85cf31cfb804ef20bacf8e14d30ce46cc9307c/app/controllers/JavaController .java#L87,但得到相同的錯誤。 我已經搜索了很長時間,發現了有關Dependency Injection的主題,但是沒有任何示例。 任何示例和/或從這里可以去的地方都很棒。

如果您更換

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

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

仍然出現相同的錯誤,則需要檢查的內容包括:

  1. 重新編譯之前是否要保存源代碼? 如果錯誤消息中提到了F.Promise ,但是未出現在代碼中,那就太麻煩了。 在Play 2.5中, WSResponse.get具有簽名java.util.concurrent.CompletionStage<WSResponse> get()因此F.Promise不應從那里來。 請參閱javadoc以獲取參考。

  2. 檢查您的類路徑中的Play jar版本。 如果您是從2.4轉換為2.5,則可能仍然有依賴關系,這些依賴關系會將Play 2.4 jars作為傳遞性依賴關系引入。 如果您沒有使用IDE,IDE應該為您顯示類路徑,請使用像這樣的工具來查看依賴關系。

編輯

根據注釋中給出的錯誤消息,您正在導入錯誤的WSResponse類,因為您正在混合Java和Scala API。 看起來您正在導入play.api.libs.ws.WSResp‌​onse而不是play.libs.ws.WSResp‌​onse (注意包的api部分,這表示Scala API)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM