我将Play框架项目从2.2.4迁移到2.3.8后出现问题:
这是运行命令“activator compile”的错误输出:
[error] ...\workspace\testproject\conf\routes: value Asset is not a member of object controllers.Assets
[error] bad symbolic reference to controllers.Assets.Asset encountered in class file 'JavascriptLitteral.class'.
[error] Cannot access type Asset in object controllers.Assets. The current classpath may be missing a definition for controllers.Assets.Asset, or JavascriptLitteral.class may have been compiled against a version that's incompatible with the one found on the current classpath.
[error] ...\workspace\testproject\conf\routes: value Asset is not a member of object controllers.Assets
[error] three errors found
我编写了自己的资产控制器,我是因为子项目而创建的。该项目不再包括在内,因此控制器。资产仍然是。
路线路径是标准:
GET /assets/*file controllers.Assets.at(path="public", file)
可能是,Activator for 2.3.8和Play 2.2.4以不同方式编译内容/以不同方式清理项目?我试图自动关闭eclipse的构建,仍然没有区别:(。
有人有想法,这个问题会产生什么?我对任何提示感到高兴:D
答案 0 :(得分:1)
我在另一个文件中删除了object Assets extends controllers.AssetsBuilder
并修复了问题。
答案 1 :(得分:1)
让我的方法保持静态就行了,例如。
public static Result index() {
return ok(index.render("Now I work."));
}
答案 2 :(得分:1)
首先运行activator clean
,然后运行activator run
应该有效。如果它不起作用,可能是因为activator clean
没有以某种方式清除过时生成的路径(这应该是激活器的错误)。只需手动删除生成的路线,就可以了,
rm target/scala-2.11/routes/main/router/*
根据您正在使用的游戏版本,路径可能会有所不同。
答案 3 :(得分:0)
我认为它是你在路线中定义的路径。试试
GET /assets/*file controllers.Assets.at(path="/public", file)
path="/public"
如果上述问题无法解决问题,请检查this。
答案 4 :(得分:0)
好像激活器(播放2.3.8)正在使用不同的库依赖源repo%USER_HOME%/。ivy2或类似的东西,因此在2.2.4下创建的项目没有得到更新。这很糟糕。甚至不是通过命令激活器清洁激活器重新加载等等...有没有人知道为什么?我希望“activator eclipse”可以完成这项任务,但是当编译器发现错误时它就会停止