默认情况下,我的所有控制器和应用程序文件都位于app
目录中。我想将我的应用程序特定文件保存在src
目录中,并使用app
来获取特定于框架的代码。
所以我在app/controllers/HomeController.java
package controllers;
import chat.model.Message;
import play.mvc.*;
import views.html.*;
public class HomeController extends Controller {
public Result index() {
Message message = new Message(new String("Hello world!"), new String("John"));
return ok(index.render(message.message));
}
}
我在src/chat/model/Message.java
package chat.model;
public class Message
{
public String message;
public String author;
public Message(String message, String author) {
this.message = message;
this.author = author;
}
}
现在,我正在使用Lightbend的激活器,就像Play框架推荐的那样,但我有错误package chat.model does not exist
。我确定这是一个愚蠢的问题,但我正在努力解决它。
我正在使用IntelliJ,我将src
标记为源根,IntelliJ可以看到此类(它没有显示任何错误)
为什么它不起作用?
答案 0 :(得分:0)
这种情况正在发生,因为您已将IntelliJ IDEA配置为识别新的源目录,但您尚未将此新目录添加到sbt配置中。
如何确认?在应用程序的根目录中运行以下命令:
sbt "show unmanagedSourceDirectories"
最后一行将是:
[info] List(/your/app/directory/app-2.11, /your/app/directory/app, /your/app/directory/app)
这是sbt识别的源目录列表。要添加另一个目录(src
),只需follow the docs并将以下行添加到build.sbt
文件中:
unmanagedSourceDirectories in Compile += baseDirectory.value / "src"
之后,将项目重新导入IntelliJ - 如果您没有使用自动导入功能 - 它将自动识别src目录。最后,您还可以使用default sbt layout作为Play应用程序。