【问题标题】:Newly created scala.html views are not being recognized in Play Framework 2.xPlay Framework 2.x 无法识别新创建的 scala.html 视图
【发布时间】:2012-05-24 11:30:12
【问题描述】:

我正在使用 Play Framework 2.0.1。我使用“play new”命令创建了一个 Java 应用程序。默认情况下,会创建两个视图:index.scala.html 和 main.scala.html

我已经完成了一些示例教程应用程序,可以让我呈现这些视图。但是,当我添加一个新视图时(默认情况下在 app/views/ 中),我得到一个无法找到的编译错误:

public static Result getAllCars() {
    List<Car> cars = Car.getAllCars();
    return ok(simpleCarView.render(cars));
}

我可以的

import views.html.index;
import views.html.main;

但不是

import views.html.simpleCarView; 

控制台错误:

cannot find symbol
[error] symbol : variable simpleCarView
[error] location: class controllers.Application

我尝试在文件目录和 Eclipse 中添加 scala.html 视图,但由于某种原因找不到它们。我也试过重启默认的 Netty 服务器。

关于造成这种情况的任何想法?

【问题讨论】:

  • 对 playframework 2.1.3 有同样的问题。问题是 IntelliJ 的想法像这样优化了我的导入:import views.html.index$;

标签: java playframework playframework-2.0


【解决方案1】:

这些视图不是 Eclipse 编译的,但只要 target\scala-2.9.1\classes_managed 目录在你的 eclipse 项目构建路径中,就可以在 Play 编译后被 eclipse 看到。

尝试在命令行上运行“play compile”(或者如果您已经在 play 控制台中,则只需“compile”)然后在 eclipse 中刷新您的项目(选择项目并按 F5)

【讨论】:

  • 我已经完成了“play compile”,我收到了我在问题中发布的错误。当我编译时,它说正在编译两个 scala 源和 1 个 Java 源。我假设它在谈论我的 Application.java 和 index.scala.html 和 main.scala.html。但是其他视图没有在views文件夹下编译。
  • 在做了很多刷新、删除/读取视图、重新编译等之后......问题似乎已经消失了。我无法重现我之前描述的奇怪行为。一般来说,您的答案描述了要完成的最佳步骤,因此我将其标记为答案。
  • @Matt 关键是在运行play compile 之前注释掉控制器中导致编译器错误的行(红色下划线),否则您将继续看到该错误。注释掉并运行 play compile 后,您可以刷新 eclipse,取消注释该行并将视图导入控制器。希望这一澄清可以为遇到此问题的人节省一些麻烦。
  • 这真的很糟糕。我的感觉是我们并不真正需要一个框架,除非它真的像一个框架......
  • 这不再起作用了,因为目标文件夹中没有 scala-2.4.2 文件夹了
【解决方案2】:

对于您的 IntelliJ 12 用户: 我升级到 Play 2.1,它破坏了我的 Play IntelliJ Support 插件。 这导致 IntelliJ 无法识别:

import views.html.*;

所以当点击cmd + o 优化我的导入时,它被删除了。 这导致运行 play clean compile 时出现编译错误,因为 未导入视图:

[error] symbol  : variable index
[error] location: class controllers.Application
[error]         return ok(index.render());
[error]                   ^
[error] 1 error
[error] (compile:compile) javac returned nonzero exit code
[error] application -

所以我卸载了插件,重新启动 IntelliJ 和 viola 一切正常 就像一个魅力!

【讨论】:

    【解决方案3】:

    你可以使用

    ~compile
    

    在游戏控制台中,以便在文件更改时重新编译更新的模板,并且可能 Eclipse 会立即看到更改(IDEA 会这样做)。

    【讨论】:

    • 效果很好。您还可以使用 ~run 在运行服务器时自动重新编译模板。
    【解决方案4】:

    这发生在我复制整个项目并尝试修改它之后。 HTML 视图中的更改将被忽略,因为它们没有被编译。

    执行activator clean compile run 解决了问题。

    【讨论】:

      【解决方案5】:

      我也有过这种行为。原来这是一个典型的复制/粘贴问题。我忘记更新导入语句。

      【讨论】:

        【解决方案6】:

        我执行与 InPursuit 建议的相同的 play compile,但是当添加一个全新的视图时,我发现我需要关闭项目并重新打开它,以便 eclipse 重建其“内容辅助”信息。

        我只是右键单击项目并选择“关闭项目”,然后右键单击现在为空的项目文件夹并选择“打开项目”。这很烦人,但这是对我有用的唯一方法(没有重新启动 eclipse)。有时红色波浪线在重新打开后仍然存在,但如果我刷新它们就会消失。

        【讨论】:

          【解决方案7】:

          就我而言,我刚刚添加了以下导入:

          import views.html.*;
          

          如果您通过 CTRL + SHIFT + O

          组织导入,Eclipse IDE 会删除上述行

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-03-26
            • 1970-01-01
            • 2013-09-23
            • 1970-01-01
            • 1970-01-01
            • 2013-10-02
            • 2012-12-12
            相关资源
            最近更新 更多