资产控制器编译错误[value资产不是对象控制器的成员。资产]播放2.3.8

时间:2015-02-18 09:09:38

标签: playframework compilation migration assets typesafe-activator

我将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

5 个答案:

答案 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”可以完成这项任务,但是当编译器发现错误时它就会停止