Playframework 播放框架[2.4.x]-模块路由特定名称失败,原因是“资产不是包的成员”`

Playframework 播放框架[2.4.x]-模块路由特定名称失败,原因是“资产不是包的成员”`,playframework,module,routing,playframework-2.4,Playframework,Module,Routing,Playframework 2.4,我尝试使用标准路由文件conf/routes提供特定于模块的路由,这些路由可以包括在Play应用程序中: -> /psmod1 com.escalesoft.psmod1.ctrl.Routes 获得的编译错误: 类型Psmod1Assets不是包的成员 com.escalesoft.psmod1.ctrl 为了完成这一点,我按照官方文件中的指示,在 1。在自己的包中定义资产和控制器类 将资产类别Psmod1Assets.scala定义为: package com.escalesoft.

我尝试使用标准路由文件
conf/routes
提供特定于模块的路由
,这些路由可以包括在Play应用程序中:

-> /psmod1 com.escalesoft.psmod1.ctrl.Routes
获得的编译错误:

类型Psmod1Assets不是包的成员 com.escalesoft.psmod1.ctrl

为了完成这一点,我按照官方文件中的指示,在

1。在自己的包中定义资产和控制器类

将资产类别Psmod1Assets.scala定义为:

package com.escalesoft.psmod1.ctrl import play.api.http.LazyHttpErrorHandler object class Psmod1Assets extends controllers.AssetsBuilder(LazyHttpErrorHandler)
# Routes
# Home page
GET   /                com.escalesoft.psmod1.ctrl.Application.index

# Map static resources from the /public folder to the /assets URL path    
GET   /assets/*file    com.escalesoft.psmod1.ctrl.Psmod1Assets.versioned(path="/public", file: Asset)
如果您愿意,可以在github上检查或克隆我的小型测试项目的代码:

  • 在线:
  • 使用git时:
    git克隆-b路由问题https://github.com/refond/psmod1.git
项目已配置为使用标准的
控制器运行。
转到
/conf/com.escalesoft.psmod1.ctrl.routes
文件(在处进行检查),并将行替换为
controllers.Assets
,将行替换为
com.escalesoft.psmod1.ctrl.Psmod1Assets
,以重现编译错误

我已经检查了以下资源:

  • 看起来像是重复的,但批准的答案无法解决当前问题
  • 有趣但过时:
  • 一般的

资产类别Psmod1Assets.scala定义必须是。。。类不是对象:

package com.escalesoft.psmod1.ctrl import play.api.http.LazyHttpErrorHandler class Psmod1Assets extends controllers.AssetsBuilder(LazyHttpErrorHandler) 包com.escalesoft.psmod1.ctrl 导入play.api.http.LazyHttpErrorHandler 类Psmod1Assets扩展controllers.AssetsBuilder(LazyHttpErrorHandler) 这与Play 2.4推荐的InjectedRoutesGenerator设置有关,该设置要求构建的资产是一个类,以便从依赖项注入中获益。见官方文件,网址:

请注意,官方文档似乎与此更改不完全一致,但仍可能声明
对象
,而不是


问题描述中提到的我在github上的小测试项目没有更新以使用自定义的
com.escalesoft.psmod1.ctrl.Psmod1Assets

资产Psmod1Assets.scala定义必须是。。。类不是对象:

package com.escalesoft.psmod1.ctrl import play.api.http.LazyHttpErrorHandler class Psmod1Assets extends controllers.AssetsBuilder(LazyHttpErrorHandler) 包com.escalesoft.psmod1.ctrl 导入play.api.http.LazyHttpErrorHandler 类Psmod1Assets扩展controllers.AssetsBuilder(LazyHttpErrorHandler) 这与Play 2.4推荐的InjectedRoutesGenerator设置有关,该设置要求构建的资产是一个类,以便从依赖项注入中获益。见官方文件,网址:

请注意,官方文档似乎与此更改不完全一致,但仍可能声明
对象
,而不是


问题描述中提到的我在github上的小测试项目没有更新以使用自定义的
com.escalesoft.psmod1.ctrl.Psmod1Assets

对象,而不是Psmod1Assets定义中的类是罪魁祸首!正如Psmod1Assets定义中的in-object而不是class的注释所指出的,罪魁祸首!正如中的一篇评论所指出的那样