【问题标题】:include module routes in play framework在播放框架中包含模块路由
【发布时间】:2013-05-08 22:42:42
【问题描述】:

我在我的play应用中创建了一个模块,模块的结构是

myApp/app/builder/modules/design

在 myApp dependencies.yml 我已经给出了

# Application dependencies

require:
    - play
    - design -> design

repositories:
    - My modules:
        type:       local
        artifact:   /var/www/html/myApp/app/builder/modules/design
        contains:
            - design

在 myApp 路由中

GET     /                                       Application.index
GET     /home                                   Application.index
GET     /design                                 module:design.index

应用程序运行成功,但是当我访问设计模块中的设计页面时,它会抛出错误

10:13:58,247 ERROR ~ Cannot include routes for module design.index (not found)

我应该怎么做才能解决这个错误。

当我在 application.conf 中添加模块规范时

module.design=/var/www/html/myApp/app/builder/modules/design

然后它抛出一个错误

The file {module:design}/app/controllers/Design.java could not be compiled. Error raised is : The declared package "builder.modules.design.app.controllers" does not match the expected package "controllers"

【问题讨论】:

  • 如果我在 application.conf 中添加它会抛出错误,但在dependicies.yml 中指定不会抛出错误但说不能包含路由
  • 好像包声明错误builder.modules.design.app.controllers应该是controllers.design

标签: routes playframework


【解决方案1】:

@pere 我已经创建了设计页面并将设计控制器包名称修改为

app.builder.modules.design.controllers

我在 application.conf 中添加了

module.design:app/builder/modules/design

在dependencies.yml中作为

require:
    - play
    - myApp -> design

运行时控制台在 application.conf 中显示弃用 下一行提供模块设计

但显示同样的错误然后我 我剪切了builder文件夹并放入我的myApp文件夹并将设计控制器包名称更改为控制器并在 应用程序.conf

module.design:builder/modules/design

然后一切正常

我发现错误在于包的命名 于是我再次切入app文件夹,将设计控制器包名改为

builder.modules.design.app.controllers

当我运行它显示的应用程序时

The file {module:design}/app/controllers/Design.java could not be compiled. Error raised is : The declared package "builder.modules.design.app.controllers" does not match the expected package "controllers"

可能是什么错误

【讨论】:

    【解决方案2】:

    我们在玩 1.2.4 时遇到了同样的问题

    我们通过 dependencies.yml 导入我们的模块并得到同样的错误。 然后,我们将它们从 deps.yml 中删除,然后通过 application.conf 导入。

    有效,尽管它已被弃用。

    【讨论】:

      【解决方案3】:

      我认为您的问题与控制器的位置有关。控制器应该在包“控制器”下。可以是“controllers.subpackage1.subpackage2...”

      您的控制器似乎没有遵循这种模式

      【讨论】:

      • 我已经创建了设计页面并将设计控制器包名称修改为 app.builder.modules.design.controllers 和 dependencies.yml 作为要求: - play - myApp -> design 但我仍然是得到同样的错误。
      • 不,不,不能是“app.builder.modules.design.controllers”,应该是“controllers.builder.modules.design”。控制器优先。
      【解决方案4】:

      我有一个类似的问题,并认为问题是由于我的模块名称中的连字符而发生的,然后我将其更改为下划线并且它工作正常。

      我现在不能测试它,但如果我有空闲时间我会测试它是否是因为你的项目名称中的点。

      【讨论】:

        猜你喜欢
        • 2018-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 1970-01-01
        • 2016-05-25
        相关资源
        最近更新 更多