2015-07-20 19 views
6
WS.url("https://api.humanapi.co/v1/human"+url+"?updated_since="+updatedSince).setHeader("Authorization", "Bearer "+accessToken) 
     .setHeader("Accept", "application/json").get().map(
       new Function<WSResponse, JsonNode>() { 
        public JsonNode apply(WSResponse response) { 
         JsonNode json = response.asJson(); 
         success(json); 
         return json; 
        } 
       } 
    ); 

ten wyświetla błąd „Typ scala.concurrent.ExecutionContext nie mogą być rozwiązane Jest pośrednio odwołuje się od wymaganych .class plików.”.play Framework - ExecutionContext nie może zostać rozwiązany, gdy próbuje map obietnicę

Próbowałem dodanie

import scala.concurrent.ExecutionContext; 

ale to błąd tylko „ruchy” z linii, gdzie obietnica jest na początku pliku i nadal nie będzie skompilować.

Próbowałem zostały również dodanie

import play.api.libs.concurrent.Execution.Implicit.defaultContext; 

ale nie ma czegoś takiego, które mają być przywiezione.

Używana gra to 2.4.2.

plik SBT:

version := "1.0-SNAPSHOT" 

lazy val root = (project in file(".")).enablePlugins(PlayJava) 

scalaVersion := "2.11.6" 

resolvers ++= Seq(
    "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/", 
    "sonatype snapshots" at "https://oss.sonatype.org/content/repositories/releases/" 
) 

checksums := Nil 

libraryDependencies ++= Seq(
    javaJdbc, 
    cache, 
    javaWs, 
    "org.mockito" % "mockito-all" % "1.10.19", 
    "commons-codec" % "commons-codec" % "1.10", 
    "de.flapdoodle.embed" % "de.flapdoodle.embed.mongo" % "1.48.0", 
    "org.mongodb.morphia" % "morphia" % "1.0.0-rc0" 
) 

libraryDependencies += "org.mongodb" % "mongodb-driver" % "3.0.2" 

// Play provides two styles of routers, one expects its actions to be injected, the 
// other, legacy style, accesses its actions statically. 
routesGenerator := InjectedRoutesGenerator 
+0

Zrobiłem, ale nic tam nie pomaga mi rozwiązać problemu. – Myzreal

+0

W większości sytuacji odpowiednim kontekstem wykonania będzie domyślna pula wątków Play. Można tego użyć, importując go do pliku źródłowego Scala: importuj play.api.libs.concurrent.Execution.Implicits._ https://www.playframework.com/documentation/2.4.x/ThreadPools#Using -the-default-thread-pool – Zernike

+0

Wiem o tym. Problem polega na tym, że "import play.api.libs.concurrent.Execution.Implicits._ nie może zostać rozwiązany". – Myzreal

Odpowiedz

8

Miałem ten sam problem i uświadomiłem sobie, że moja konfiguracja Play Eclipse była niekompletna (brakowało mi kroków poniżej 2 & 3). Powtórzyłem konfigurację, tym razem po wszystkich odpowiednich krokach. ExecutionContext stał się wtedy możliwy do rozwiązania.

Instrukcja do gry Eclipse instalacji

Oryginalny numer: https://www.playframework.com/documentation/2.4.x/IDE

Updated referencyjny: https://www.playframework.com/documentation/2.5.x/IDE

1) Dopisz tę linię na projekt/plugins.sbt:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "4.0.0") 

2) Dołącz tę linię do build.sbt:

EclipseKeys.preTasks := Seq(compile in Compile) 

3) Dołącz te linie build.sbt (zakładając, że nie masz żadnych źródeł Scala):

EclipseKeys.projectFlavor := EclipseProjectFlavor.Java   // Java project. Don't expect Scala IDE 
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources) // Use .class files instead of generated .scala files for views and routes 

4) Zapisz wszystkie twoje pliki projektu. Zamknij Eclipse.

5) W wierszu polecenia cd do katalogu projektu i uruchom:

activator "eclipse with-source=true" 

6) Otwórz Eclipse. Otwórz swój projekt.Odśwież go w następujący sposób:

Package Explorer> kliknij prawym przyciskiem myszy your_project> odświeżyć

+0

Dzięki, spróbuję tego i poprawię odpowiedź, jeśli to pomoże. – Myzreal

+0

To nie działa dla mnie. :(Jakieś dalsze sugestie: –

+0

@JayQ Nie jestem pewien, co zasugerować, niż spróbować stworzyć nową, pustą aplikację Play i dokładnie postępować zgodnie z instrukcjami Eclipse – Aaron

0

Rozwiązanie:

importu scala.concurrent.ExecutionContext;

Zignoruj ​​błędy zaćmienia.

+1

Zignorowanie problemu "nie można rozwiązać" może zagrozić (wyłączyć) obsługę kodu Eclipse. Zobacz poniżej, co działało w moim przypadku. – Aaron

+1

To rozwiązanie jest po prostu nie do zaakceptowania, zobacz odpowiedź Aarona poniżej. – Neilos

1

Wystarczy zainstalować ScalaIDE wtyczki z Eclipse Marketplace. To rozwiąże problem + pozwoli Ci stworzyć Scalę.

+0

To działa i wydaje się właściwe. Działa nawet jeśli masz (z jakiegoś powodu) przestarzałą wtyczkę SBT Eclipse i starszą grę na ścieżce - wciąż utknęliśmy w sbt-eclipse- plugin 3.0.0 i Play 2.4. –

0

spróbuj także usunąć elementy zaćmienia z katalogu źródłowego (.project, .classpath, etc) i ponownie zaimportować projekt.

Powiązane problemy