首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已配置到play.api.db.DBApi的绑定,play-slick的演变和注入器错误

已配置到play.api.db.DBApi的绑定,play-slick的演变和注入器错误
EN

Stack Overflow用户
提问于 2015-10-08 07:49:56
回答 2查看 5K关注 0票数 29

我想将slick引入到我的play项目中,因此我向build.sbt添加了以下依赖项:

代码语言:javascript
复制
"com.typesafe.play"          %% "play-slick"               % "1.0.1"     withSources(),
  "com.typesafe.play"          %% "play-slick-evolutions"    % "1.0.1"     withSources(),

然后,当我为控制器运行集成规范时,我在Intellij IDE和命令行激活器测试中都得到了以下异常。在谷歌之后,我找到了解决方案:https://www.playframework.com/documentation/2.4.x/PlaySlickFAQ#A-binding-to-play.api.db.DBApi-was-already-configured

删除jdbc依赖后,使用命令行通过了集成规范,但是在Intellij IDE上运行测试时仍然得到相同的错误,如下所示:在嵌套套件上调用run时遇到异常-无法创建注入器,请参见以下错误:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2016-01-21 01:50:44

如果你和我一样,你的build.sbt里有类似这样的东西

代码语言:javascript
复制
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"
)

删除jdbc

代码语言:javascript
复制
libraryDependencies ++= Seq(
  //jdbc, //<<---- this one here
  cache,
票数 61
EN

Stack Overflow用户

发布于 2015-12-14 05:13:37

您可能已经向jdbc添加了依赖项,如果您使用slick来处理它,这是没有意义的。移除它,它就会正常工作。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33004303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档