IntelliJ IDEA报告路由错误。

4
  1. 我通过activator new play-scala-intro play-scala-intro创建了一个项目。
  2. 在IDEA中,我点击了File -> Import project from Existing sources并选择了SBT

enter image description here

这是默认的项目结构: dfdfdf

我也尝试了这里的所有提示(针对Play 2.2 - 2.3建议,而我有Play 2.4)。但是我没有尝试将target/scala-*/classes_managed添加到源代码中,因为我的项目中不包含此文件夹。

版本

  • 我使用已安装“Scala”和“Playframework支持”插件的Idea 14 Ultimate。
  • Play Framework: addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.1")
  • scalaVersion := "2.11.6"
3个回答

5
JetBrains尚未更新他们的Scala/Play插件以反映新的路由结构,使用类而不是对象来控制器(例如)。您可以忽略这些错误,运行应用程序,一切都会很好。请参阅https://youtrack.jetbrains.com/issue/SCL-8812上正在进行中的问题票证以获取更多信息。其中一条评论说:“这在最近的IntelliJ和Scala 1.6.27.1.EAP的EAP版本中得到了修复。同时,IntelliJ EAP 15在其当前状态下看起来非常好。”您可以等待IntelliJ 15。同时,忽略IntelliJ 14及更早版本错误标记的错误。

实际上,.scala文件中还有多个与路由相关的错误,这些错误很难忽略。有没有办法获取模板的旧版本?(简单克隆/templates/play-scala-intro无法工作,因为在这种情况下省略了后处理) - Nelson Tatius
很遗憾,在IntelliJ IDEA 15 EAP(版本142.2670.3)上仍然存在相同的错误。 - Nelson Tatius
您的 IDEA 15 EAP 使用的 Scala 插件版本是什么? - bjfletcher

3

我的IntelliJ IDEA版本是14.1.4,在controllers之前加上@符号,像这样:

GET         /                    @controllers.Application.index

IDE不会报告“无法解析...”消息。


0

查看2.4版本的Play文档https://www.playframework.com/documentation/2.4.x/ScalaRouting,它明确指出:

Play支持生成两种类型的路由器,一种是依赖注入路由器,另一种是静态路由器。默认为静态路由器,但如果您使用Play种子Activator模板创建了新的Play应用程序,则项目将包括以下配置在build.sbt中,告诉它使用注入路由器:

routesGenerator := InjectedRoutesGenerator

因此,如果您检查build.sbt,它会有一行-

routesGenerator := InjectedRoutesGenerator

表示默认路由器是依赖注入路由器。

因此,为了避免错误,您需要在路由文件中的控制器后面添加@,如https://www.playframework.com/documentation/2.4.x/ScalaRouting所述 -

Play文档中的代码示例假定您正在使用注入路由生成器。如果您没有使用它,您可以轻松地为静态路由生成器调整代码示例,方法是在路由的控制器调用部分前缀加上@符号,或者将每个控制器声明为对象而不是类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接