Scala IDE 4.0.0 认为开箱即用的 Play Framework 2.3.7 程序存在错误

Scala IDE 4.0.0 thinks there's errors in an out-of-the-box Play Framework 2.3.7 program

我已经通过 Typesafe Activator 创建了一个 Play Framework 程序(因此它完全遵循模板)。

我使用 sbteclipse-plugin 版本 3.0.0 创建了一个 Eclipse 项目并将其导入到 Scala IDE 4.0.0 中。这些都是撰写本文时的最新版本。

Scala IDE 似乎绝对支持 Play Framework。它具有自定义格式的语法突出显示,包括路由文件和模板。然而,它似乎无法从控制器中找到视图。特别是,对 views.html.index 的调用会触发错误:"object index is not a member of package views.html".

我尝试使用本机挂钩或池作为 detailed here 启用刷新,但没有任何影响。

我应该注意到,虽然代码是在命令行中编译的(使用 activator ~run),但它还没有在 Scala 中编译 IDE,因为我不知道如何(它似乎没有被记录在任何地方)。

我该怎么做才能摆脱这些虚假错误?

编辑:在 运行 activator clean ~run 之后,我有另一个错误:在解决构建路径错误之前无法构建项目。没有关于这些构建路径错误是什么的更多详细信息。

我收到了同样的错误信息。 你在 Eclipse 中使用 java8 作为 jre 吗? 从 java8 切换回 java7 后,一切正常。

更新: 只需升级到 sbteclipse 版本 5.1.0,一切都应该开箱即用。还要确保您遵循 the Play documentation on how to set up Eclipse/ScalaIDE.


a known bug in sbteclipse, which probably will be fixed 很快。

现在,您可以将以下行添加到 build.sbt:

EclipseKeys.createSrc := EclipseCreateSrc.All

关闭 SBT 控制台并再次 运行 sbt eclipse。作为解决方法,应该将以下行添加到项目文件夹中的 .classpath 文件中:

<classpathentry kind="src" path="target/scala-2.11/twirl/main"/>

刷新您的 Eclipse 项目以获取更改。

我遇到了同样的问题,同样是 Scala IDE 4.0.0。我遵循了 mkurz 的指示,它们非常有效。但是我没有手动更改项目文件夹中的 .classpath 文件,而是使用 Eclipse 界面:

  • 在主 window 的顶部菜单中,单击 Project,然后单击 Properties
  • Properties window 中,单击 Java Build Path 选项(选项列表在左侧)
  • Source 选项卡中,单击 Add Folder... 按钮。
  • Source Folder Selectionwindow中选择target/scala-2.11/twirl/main文件夹,所以它包含在编译路径中。单击 Ok 按钮。
  • 单击 Properties window 中的 Ok

现在项目应该编译得很好:)。这样我就可以完成 the play setup example in Scala IDE website

如果按照 Mkurz 的说明(添加 EclipseKeys.CreateSrc...),您的问题没有解决,请单击项目 -> 属性 -> Java 构建路径。查看源文件夹选项卡。

您可能会发现一个名为.../src_managed/main 的重复文件夹(感谢 Matt)。如果是这样,请关闭该项目。从 .classpath 文件(位于 activator/SBT 项目目录的底部)中删除两个 ../src_managed/main 条目之一。重新打开并清理项目,您应该可以开始了。

我首先尝试了@mkurz 解决方案,但也运行 遇到了与@matt 相同的错误。我很沮丧,因为我无法生成 eclipse 项目,而不必转到 Eclipse 项目属性来手动修复构建错误。经过一些调查,我发现了完全消除所有错误的解决方案。添加这个你的 build.sbt:

unmanagedSourceDirectories in Compile <+= twirlCompileTemplates.target

或者如果这对你不起作用,你也可以使用:

unmanagedSourceDirectories in Compile <+= target.zipWith(scalaBinaryVersion) { (b,v) => b / s"scala-$v/twirl/main" }

再见,构建错误!

对我来说,原来在 Scala IDE 中安装的 JRE 是 openjdk,将其更改为 Oracle Java 8 并且成功了。