java - 从 Play 框架中的另一个目录加载包

标签 java playframework

默认情况下,我的所有 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

中有 Message 类
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/

相关文章:

java - Vigenere 解密奇数

java - JMockit:模拟父类和子类

java - 具有结构化流的 S3 检查点

java - PlayFramework (2.5.x) 不绑定(bind)来自表单的数据,返回带有空字段的 Ojbect

playframework - 缓存 renderBinary 响应

playframework - 如何将Play 2.2 Scala应用程序创建为SBT子项目

java - Android Studio 调试错误(Ubuntu)

java - 让 InfiniteViewPager 发挥作用

java - 使用 Scala 将文件夹压缩到字节数组

scala - 设置 IntelliJ 2017 以使用 Gradle 4.2 和最新的 Play Framework 2.6