15

我正在使用 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 服务器。

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

4

7 回答 7

25

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

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

于 2012-05-17T01:07:20.713 回答
4

对于您的 IntelliJ 12 用户:我升级到 Play 2.1,它破坏了我的 Play IntelliJ 支持插件。这导致 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,一切都像魅力一样!

于 2013-02-20T09:10:06.233 回答
3

你可以使用

~compile

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

于 2012-05-17T09:40:28.093 回答
2

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

这样做activator clean compile run解决了问题。

于 2015-11-12T20:18:57.203 回答
1

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

于 2012-05-26T11:07:54.863 回答
0

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

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

于 2012-05-18T19:15:42.633 回答
0

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

import views.html.*;

如果您通过以下方式组织导入,Eclipse IDE 将删除上述行CTRL + SHIFT + O

于 2017-10-25T17:46:59.557 回答