Play Framework - 包不存在

时间:2014-03-23 19:09:51

标签: java playframework compilation

当我跑步时:

compile
从播放控制台

我收到以下错误:

[info] Compiling 10 Scala sources and 7 Java sources to C:\Development\play\project\target\scala-2.10\classes...
[error] C:\Development\play\project\app\com\me\project\controllers\Application.java:27: error: package com.me.project.views does not exist
[error]                 return ok(com.me.project.views.html.index(null));
[error]                                              ^
[error] 1 error
[error] (compile:compile) javac returned nonzero exit code
[error] Total time: 4 s, completed 23-Mar-2014 19:00:24

但是,如果我将该行更改为return ok("something"),那么它会编译,我可以看到视图文件夹是在以下位置生成的:

C:\Development\play\project\target\scala-2.10\project\target\scala-2.10\classes_managed\com\me\project\views\html

所以看起来包应该存在,不是吗?我不太确定我做错了什么。

更新1

我的源模板位于:

com.me.project.views

奇怪的是,当我可以获得编译源代码时(如上所述),eclipse将在com.nat.aegis.views.html上自动完成,我可以在自动中看到index类。 - 完整的对话。我一遍又一遍地尝试清洁,刷新和重新编译,但它没有效果。

3 个答案:

答案 0 :(得分:1)

documentation中所述,引入HTML模板文件会导致Play在views.html包中生成一个类。然后,您将模板组织到包中的方式由Play复制到views.html以下。

因此,我认为您的退货声明应如下:

return ok(views.html.com.me.project.index(null)); 

(这无法解释您在目标目录中看到的文件夹结构。)

答案 1 :(得分:0)

<强>解决方案

好的,我正在将Scala项目移植到Java,我注意到以下内容:

在Scala项目中,引用模板的方式是原始问题中我在示例中的方式,但是在Java中这是不正确的,该行应该是:

return ok(com.me.project.views.html.index.render(null));

编译器错误并没有真正暗示这一点,但是来自@avik的反应使我更接近文档(我的大脑仍处于Scala模式)。

[info] Compiling 10 Scala sources and 7 Java sources to C:\Development\play\project\target\scala-2.10\classes...
[success] Total time: 4 s, completed 23-Mar-2014 23:39:56

答案 2 :(得分:0)

在我的情况下,我将一个文件夹添加到名为developer的views文件夹中。到这个文件夹我添加了一个tables.scala.html文件。

在我的控制器中我会说:

public static Result main() {

    return ok(developer.tables.render());
}

public static Result main() {
   return ok(views.developer.tables.render())
}

在运行期间,编译器说开发包不存在&#34;。在向项目添加新视图和类时,我通常会运行clean,reload和update(使用eclipse)。

过了一会儿,诀窍就是像这样引用这个观点

return ok(views.html.developer.tables.render())

如果你问我,那似乎不是很有吸引力。

但这很有效,我希望它也适用于其他人。