Play Framework 2.x中未识别新创建的scala.html视图

时间:2012-05-16 20:42:37

标签: java playframework playframework-2.0

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

关于导致这种情况的任何想法?

7 个答案:

答案 0 :(得分:24)

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

尝试在命令行上运行“play compile”(如果你已经在游戏控制台中,只需“编译”)然后在eclipse中刷新你的项目(选择项目并点击F5)

答案 1 :(得分: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和中提琴一切正常 喜欢魅力!

答案 2 :(得分:3)

你可以使用

~compile
在播放控制台中

,以便在文件更改时重新编译更新的模板,Eclipse可能会立即看到更改(IDEA会这样做)。

答案 3 :(得分:2)

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

执行$npm install -g jasmine-node $jasmine-node --coffee spec/ . Finished in 0.01 seconds 1 test, 1 assertion, 0 failures, 0 skipped 解决了问题。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

在我的情况下,我刚刚添加了以下导入:

class BusbyMoviesMainApplication : Application() {
    companion object {
        @JvmStatic
        lateinit var instance: BusbyMoviesMainApplication
            private set
    }

    override fun onCreate() {
        super.onCreate()
        instance = this
    }
}

如果通过 CTRL + SHIFT + O

组织导入,Eclipse IDE将删除提到的行