2015-10-07 17 views
13

Chcę przedstawić zręczny do mojego projektu gry, więc dodam następujące zależności do build.sbt:wiązanie z play.api.db.DBApi został już skonfigurowany, ewolucje i błąd wtryskiwacza z play-śliskiego

"com.typesafe.play"   %% "play-slick"    % "1.0.1"  withSources(), 
    "com.typesafe.play"   %% "play-slick-evolutions" % "1.0.1"  withSources(), 

Następnie, po uruchomieniu specyfikacji integracji dla kontrolera, otrzymałem następujący wyjątek zarówno w Intellijskim IDE, jak iw teście aktywatora linii poleceń. Po Google znalazłem rozwiązanie: https://www.playframework.com/documentation/2.4.x/PlaySlickFAQ#A-binding-to-play.api.db.DBApi-was-already-configured

po usunąłem JDBC zależność, spec integracji przeszły, kiedy za pomocą wiersza polecenia, jednak nadal mam ten sam błąd po uruchomieniu testu na IntelliJ IDE jak następujący błąd: wyjątkiem napotkanych podczas wywoływania bieg na zagnieżdżonego pakietu - nie można utworzyć wtryskiwacz, zobacz następujące błędy:

1) A binding to play.api.db.DBApi was already configured at play.api.db.DBModule.bindings(DBModule.scala:25): 
Binding(interface play.api.db.DBApi to ProviderConstructionTarget(class play.api.db.DBApiProvider)) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1). 
    at play.api.db.slick.evolutions.EvolutionsModule.bindings(EvolutionsModule.scala:15): 
Binding(interface play.api.db.DBApi to ConstructionTarget(class play.api.db.slick.evolutions.internal.DBApiAdapter) in interface javax.inject.Singleton) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1) 

1 error 
com.google.inject.CreationException: Unable to create injector, see the following errors: 

1) A binding to play.api.db.DBApi was already configured at play.api.db.DBModule.bindings(DBModule.scala:25): 
Binding(interface play.api.db.DBApi to ProviderConstructionTarget(class play.api.db.DBApiProvider)) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1). 
    at play.api.db.slick.evolutions.EvolutionsModule.bindings(EvolutionsModule.scala:15): 
Binding(interface play.api.db.DBApi to ConstructionTarget(class play.api.db.slick.evolutions.internal.DBApiAdapter) in interface javax.inject.Singleton) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1) 

1 error 
    at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:466) 
    at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155) 
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107) 
    at com.google.inject.Guice.createInjector(Guice.java:96) 
    at com.google.inject.Guice.createInjector(Guice.java:73) 
    at com.google.inject.Guice.createInjector(Guice.java:62) 
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:126) 
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:93) 
    at play.api.test.FakeApplication.<init>(Fakes.scala:216) 
    at org.scalatestplus.play.OneServerPerSuite$class.app(OneServerPerSuite.scala:152) 

Odpowiedz

4

prawdopodobnie dodana zależność JDBC, który nie ma sensu, jeśli używasz śliski dla niego. Usuń go i zadziała.

29

Jeśli tak jak ja, masz coś takiego w swoim build.sbt

libraryDependencies ++= Seq(
    jdbc, 
    cache, 
    ws, 
    specs2 % Test, 
    "mysql" % "mysql-connector-java" % "5.1.37", 
    "com.typesafe.play" %% "play-slick" % "1.1.1", 
    "com.typesafe.play" %% "play-slick-evolutions" % "1.1.1" 
) 

usunąć JDBC

libraryDependencies ++= Seq(
    //jdbc, //<<---- this one here 
    cache, 
+0

Faktycznie, nie jest oficjalnym [FAQ] (https: // www .playframework.com/documentation/2.5.x/PlaySlickFAQ # A-binding-to-play.api.db.DBApi-był-już-skonfigurowany) opisujący ten problem. –