Play 2.4からPlay 2.5にアップグレードしようとしています。 Replaced F.Promise with Java 8's CompletionStageのガイドを使用して、F.Promise
,map
、およびflatMap
を、前のリンクからの推奨置き換え(以下の変更のスニペットを反映)と置き換えました。Java 2.5のPlay 2.5エラー - ここではタイプ引数とラムダ式の番号が間違っていますエラー
[エラー] /Play-2-JS-2.5/app/controllers/Java8Controller.java:74:
public CompletionStage<Result> parallel() { final long start = System.currentTimeMillis(); final CompletionStage<WSResponse, Long> getLatency = resp -> System.currentTimeMillis() - start; CompletionStage<Long> googleLatency = WS.url("http://google.com").get().thenApplyAsync(getLatency); CompletionStage<Long> yahooLatency = WS.url("http://yahoo.com").get().thenApplyAsync(getLatency); return googleLatency.thenComposeAsync(googleResponseTime -> yahooLatency.thenApplyAsync(yahooResponseTime -> ok(format("Google response time: %d; Yahoo response time: %d", googleResponseTime, yahooResponseTime))) ); }
./activator clean dist
を実行した後、私は下のエラーを取得していますが間違った番号を型引数。 [エラー] CompletionStage [エラー] /Play-2-JS-2.5/app/controllers/Java8Controller.java:74:ラムダ式はここでは期待しない [エラー] resp - > System.currentTimeMillis() - 開始
CompletionStage<WSResponse, Long> getLatency
セクションには2つではなく、1つだけでなく、何らかの理由でラムダ式が好きではないと考えられます。ただし、Play 2.4で新しいAPI置換の前の構文は正常に機能しました。
私はhttps://github.com/btgrant-76/Play-2-Java-Scala-Java-8-Async-Comparison/blob/6a85cf31cfb804ef20bacf8e14d30ce46cc9307c/app/controllers/Java8Controller.java#L71-L83に表示されているものへの古い呼び出しに切り替えようとしましたが、それ以上の結果は得られません。グーグルで検索して、いつか検索していますが、これにどう対処するかはわかりません。可能性のある例を示唆しています。
それは、あなたに感謝Tanmayパティル! – gitness
助けてくれてうれしい –