将 Play 2.4 与重命名的“conf/routes”文件一起使用
Using Play 2.4 with a renamed `conf/routes` file
当我将 conf/routes
文件重命名为其他名称时,我的 simple Play 2.4 project 无法编译,例如conf/hello.routes
。我这样做的原因是为了启用 API 的组合,同时允许它们在单独的 git 存储库和 sbt 项目中开发。
多项目支持的想法是基于 this project and blog post - 但这是使用 Play 2.3。
我得到的错误是:
$ sbt test
...
[info] Hello should
[error] ! give {hello: true}
[error] Unable to provision, see the following errors:
[error]
[error] 1) Error in custom provider, java.lang.ClassCastException: interface play.api.routing.Router is not assignable from class hello.routes
[error] while locating play.api.test.FakeRouterProvider
[error] while locating play.api.routing.Router
[error]
[error] 1 error (InjectorImpl.java:1025)
[error] com.google.inject.internal.InjectorImpl.get(InjectorImpl.java:1025)
[error] com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
[error] play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:321)
[error] play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:316)
...
已解决此问题(git 存储库中的代码现在可以使用)。
问题可能与这两个有关:
Controller
实现希望在包 controllers.hello
中而不只是 hello
- 在
application.conf
文件中应该省略 controllers
命名空间,即
play.http.router = app.Routes
我只是通过将这段代码与有效的示例进行比较才了解到这一点。
当我将 conf/routes
文件重命名为其他名称时,我的 simple Play 2.4 project 无法编译,例如conf/hello.routes
。我这样做的原因是为了启用 API 的组合,同时允许它们在单独的 git 存储库和 sbt 项目中开发。
多项目支持的想法是基于 this project and blog post - 但这是使用 Play 2.3。
我得到的错误是:
$ sbt test
...
[info] Hello should
[error] ! give {hello: true}
[error] Unable to provision, see the following errors:
[error]
[error] 1) Error in custom provider, java.lang.ClassCastException: interface play.api.routing.Router is not assignable from class hello.routes
[error] while locating play.api.test.FakeRouterProvider
[error] while locating play.api.routing.Router
[error]
[error] 1 error (InjectorImpl.java:1025)
[error] com.google.inject.internal.InjectorImpl.get(InjectorImpl.java:1025)
[error] com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
[error] play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:321)
[error] play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:316)
...
已解决此问题(git 存储库中的代码现在可以使用)。
问题可能与这两个有关:
Controller
实现希望在包controllers.hello
中而不只是hello
- 在
application.conf
文件中应该省略controllers
命名空间,即play.http.router = app.Routes
我只是通过将这段代码与有效的示例进行比较才了解到这一点。