当我跑步时:
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
类。 - 完整的对话。我一遍又一遍地尝试清洁,刷新和重新编译,但它没有效果。
答案 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())
如果你问我,那似乎不是很有吸引力。
但这很有效,我希望它也适用于其他人。