首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MacWire:找到多个类型的值

MacWire:找到多个类型的值
EN

Stack Overflow用户
提问于 2017-09-07 08:55:22
回答 1查看 999关注 0票数 1

我使用的是MacWire DI框架,我会得到这个错误。

代码语言:javascript
复制
Found multiple values of type [play.api.mvc.DefaultActionBuilder]: [List(defaultActionBuilder, Action)]
[error]   override lazy val controllerComponents: DefaultControllerComponents = wire[DefaultControllerComponents]

我的应用程序是:

代码语言:javascript
复制
class AppApplicationLoader extends ApplicationLoader {
  def load(context: Context) = {
    LoggerConfigurator(context.environment.classLoader).foreach { cfg =>
      cfg.configure(context.environment)
    }
    new AppComponents(context).application
  }
}

 class AppComponents(context: Context) extends
      BuiltInComponentsFromContext(context) with AhcWSComponents
      with AssetsComponents with HttpFiltersComponents
      with EvolutionsComponents with DBComponents  with HikariCPComponents  with EhCacheComponents {

      override lazy val controllerComponents: DefaultControllerComponents = wire[DefaultControllerComponents]

在对代码做了一些小修改之后,我也得到了一些类似的错误。如何跟踪DI依赖项来跟踪这些错误?

EN

回答 1

Stack Overflow用户

发布于 2017-09-12 16:42:57

我自己也遇到了这种情况,这似乎是由于这个提交,它是作为backport包含在Play 2.6.3中的:

https://github.com/playframework/playframework/pull/7676/files/809cd1e880b01d45e95d41e65f20bfa984d1e122#r138400765

使用Play 2.6.2编译的...so代码在Play 2.6.3中失败。

解决办法:

  • 恢复到2.6.2,或者.
  • ...manually指定创建DefaultControllerComponents -(不对特定构造函数使用MacWire )

这并不是很漂亮,但它适用于2.6.3的游戏:

代码语言:javascript
复制
val defaultControllerComponents = new DefaultControllerComponents(
  defaultActionBuilder,
  playBodyParsers,
  messagesApi,
  langs,
  fileMimeTypes,
  executionContext
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46092028

复制
相关文章

相似问题

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