ProvisionException:无法提供,正在运行的框架

Posted

技术标签:

【中文标题】ProvisionException:无法提供,正在运行的框架【英文标题】:ProvisionException: Unable to provision, in play framework 【发布时间】:2017-07-01 14:56:56 【问题描述】:

我收到这些错误 ProvisionException: 无法配置,查看以下错误:

com.google.inject.ProvisionException: Unable to provision, see the following errors:

1) Could not find a suitable constructor in models.factory.FactoryHandler. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
  at models.factory.FactoryHandler.class(FactoryHandler.scala:7)
  while locating models.factory.FactoryHandler
    for parameter 0 at controllers.DirectUserController.<init>(DirectUserController.scala:90)
  while locating controllers.DirectUserController
    for parameter 7 at router.Routes.<init>(Routes.scala:124)
  while locating router.Routes
  while locating play.api.inject.RoutesProvider
  while locating play.api.routing.Router

1 error
     com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1025)
     com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
     play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:321)
     play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:316)
     play.api.Application$class.routes(Application.scala:111)
     play.api.DefaultApplication.routes(Application.scala:240)
     play.api.Play$$anonfun$start$1.apply$mcV$sp(Play.scala:90)
     play.api.Play$$anonfun$start$1.apply(Play.scala:87)
     play.api.Play$$anonfun$start$1.apply(Play.scala:87)
     play.utils.Threads$.withContextClassLoader(Threads.scala:21)
     play.api.Play$.start(Play.scala:87)

这里是代码

class FactoryHandler(var s:String="real") 
  val log = LoggerFactory.getLogger(this.getClass)
  log.debug("choice ",s)

这是 DirectUserController 的第 90 行

    class DirectUserController @Inject() (var factory:FactoryHandler) extends Controller 
//other Action code 

我还在路由文件中添加了代码

routesGenerator := InjectedRoutesGenerator

我正在使用 play framework 2.4 请帮助我为什么会出现此错误

【问题讨论】:

【参考方案1】:

你需要在 FactoryHandler 代码中指定一个 @Inject() 。阅读错误,我认为它说明了它有什么问题。

【讨论】:

class FactoryHandler @inject()(var s:String="real") 当我这样做时,我得到编译时错误注入未找到:类型注入 大写“i”并导入它,我猜

以上是关于ProvisionException:无法提供,正在运行的框架的主要内容,如果未能解决你的问题,请参考以下文章

没有实现Slick DatabaseConfigProvider绑定

无法在“DOMWindow”上执行“postMessage”:提供的目标原点与接收窗口的原点不匹配(“null”)

Quarkus 项目在 Bamboo 中构建失败

在动画期间无法正确定位子图层

windows08:远程桌面正忙无法完成执行任务解决方法

VS2015无法正常打开项目,显示正忙的解决方案