我正在使用Play Framework yabe 教程,并在添加标签时遇到了问题。我不确定我添加了哪些代码导致了更改,但现在Fixtures.loadModels(data.yml)代码在... / some_folder / play-1.2.1 / modules / docviewer / app中搜索文件/data.yml而不是... / some_folder / yabe_tutorial / conf / data.yml应该如此。
这是我在/ yabe_tutorial / app的默认包中的代码:
@OnApplicationStart
public class Bootstrap extends Job {
public void doJob() {
if (User.count() == 0) {
Fixtures.delete();
Fixtures.loadModels("data.yml");
}
}
}
我可以使用任何设置来更改loadModels使用的目录吗?
我对这一切都很陌生,所以我真的很感激一些帮助。谢谢!
答案 0 :(得分:1)
Sigurd是对的。 Fixtures.loadModels()
在Play.javaPath
中查找yml文件。尝试将data.yml
文件重命名为data-appname.yml
这样的唯一名称,并更改代码中的文件名。
@OnApplicationStart
public class Bootstrap extends Job {
public void doJob() {
if (User.count() == 0) {
Fixtures.loadModels("data-appname.yml");
}
}
}
为我工作。
另一种选择是使用Play.applicationPath
,其中包含项目根目录的位置
Fixtures.loadModels(Play.applicationPath + "/app/conf/data-appname.yml");
答案 1 :(得分:0)
在Fixtures类中加载Models时,它会扫描Play.javaPath列表中的所有目录。正常行为是javaPath包含应用程序的“app”和“conf”目录,即根目录(Play.applicationRoot,默认为“。”)。尝试调试并查看您的案例中包含的javaPath。 也许这段代码有助于:
@Override public void doJob() { if (User.count() == 0) { VirtualFile appRoot = VirtualFile.open(Play.applicationPath); Play.javaPath.add(0, appRoot.child("conf")); Fixtures.loadModels("data.yml"); } }
它将Play.javaPath新目录插入到路径顶部。无论如何,这段代码非常难看。