在IntelliJ IDEA 14.1.3中使用Play Framework 2.4 @ routes.WebJarAssets.at编译错误

时间:2015-06-09 13:12:09

标签: scala intellij-idea playframework intellij-14 playframework-2.4

我正在Intellij IDEA 14.1.3中尝试将WebJars与Play Framework 2.4.0一起使用。

我有SBT 1.7.0插件和Scala 1.5.2插件(项目Scala版本2.11.6)。

当我从终端运行它时,我的应用程序运行良好( $ activator运行 $ sbt运行)但我在IntelliJ IDEA中有编译错误并且没有自动完成在我的模板上(参见下文),@ routes.WebJarAssets.at(..)的#at()方法(而不是@ routes.Assets.at):

enter image description here

我的路线配置文件:

# Map static resources from the /public folder to the /assets URL path
GET    /assets/*file     controllers.Assets.at(path="/public", file)

# WebJars integration into Play Framework : http://www.webjars.org/documentation
GET    /webjars/*file    controllers.WebJarAssets.at(file)

有关信息,我尝试在删除我的.idea文件夹后从SBT内置构建器重新导入项目,但这不起作用。

任何解决方案?

1 个答案:

答案 0 :(得分:0)

据我所知,IDEA 14.1.3 Scala / Play插件不支持InjectedRoutesGenerator,它是从Play 2.4开始的默认routesGenerator。

webjars-play的2.4.0-1 WebJarAssets控制器实现了这种注入机制。

在JetBrains看到一个类似的bug report可能有相同的原因。

您可以使用常规的Assets控制器,直到修复错误。为方便起见,WebJars会自动提取到相对于公共资产的lib文件夹中(有关webjar资产,请参阅play's documentation

<link rel="stylesheet" media="screen" href="@routes.Assets.versioned("lib/bootstrap/css/bootstrap-theme.css")">

最终,另一种解决方法是通过停用build.sbt中的InjectedRoutesGenerator(未经测试)来回退到静态路由器。 但是,这需要对应用程序进行一些重构,以便再次在控制器中实现静态方法。