默认情况下,我的所有 Controller 和应用程序文件都位于 app
目录中。我想将应用程序特定文件保留在 src
目录中,并使用 app
来获取框架特定代码。
所以我有一个 Controller 位于 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;
}
}
现在,我像 Play 框架推荐的那样使用 Lightbend 的激活器,但出现错误package chat.model does not exit
。我确信这是一个愚蠢的问题,但我正在努力解决它。
我正在使用 IntelliJ,并且我已将 src
标记为源根,并且 IntelliJ 可以看到此类(它不会显示任何错误)
为什么不起作用?
最佳答案
发生这种情况是因为您已将 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 应用程序。
关于java - 从 Play 框架中的另一个目录加载包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38556816/