我正在为Play Subproject功能进行更多扩展测试,如下所述:http://www.playframework.com/documentation/2.0/SBTSubProjects。但是我收到了错误:
Assets is already defined as object Assets
在github上托管的示例应用程序:https://github.com/adis-me/PlayStrap
我已经为我的子项目定义了一个Asset控制器,如下所述:Asset Controller description,即使对于主项目也是如此,但错误会不断出现。我的项目出了什么问题?
控制器
package com.company.playstrap.controllers;
import controllers.AssetsBuilder;
public class Assets {
public static controllers.AssetsBuilder delegate = new AssetsBuilder();
}
路由文件
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# Home page
GET / com.company.playstrap.controllers.Application.index()
# Include sub projects
-> /common common.Routes
-> /admin admin.Routes
-> /website website.Routes
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file com.company.playstrap.controllers.Assets.delegates.at(path="/public", file)
答案 0 :(得分:5)
这是一个众所周知的错误:https://groups.google.com/forum/#!msg/play-framework/2Zk5wjAlIng/Jcec1lt7AzQJ
我自己的管理模块的解决方法:
package controllers.admin;
import controllers.AssetsBuilder;
import play.api.mvc.AnyContent;
import play.api.mvc.Action;
import play.mvc.*;
public class Application extends Controller {
private static AssetsBuilder delegate = new AssetsBuilder();
public static Action<AnyContent> asset(String path, String file) {
return delegate.at(path, file);
}
}
//routes file
GET /assets/*file controllers.admin.Application.asset(path="/public", file)
答案 1 :(得分:1)
上周,当我尝试将Assets类编写为Java类时,我遇到了这个问题。我可以解决在我的子模块中将Assets类编写为Scala类的编译问题,方法与文档中描述的相同:http://www.playframework.com/documentation/2.1.1/SBTSubProjects
基本上,我的项目结构是:
MyApplication
| - app
| - conf
| - modules
| - admin
| - app
| - controllers
| - admin
| - Assets.scala
| - project
| - public
Assets.scala 内容:
package controllers.contabil
object Assets extends controllers.AssetsBuilder
最后,我的 admin.routes 文件的内容是:
GET /assets/*file controllers.admin.Assets.at(path="/public", file)
# Home page
GET /index controllers.admin.Application.index()
干杯