【问题标题】:Loading packages from another directory in Play framework从 Play 框架中的另一个目录加载包
【发布时间】:2016-07-25 12:26:06
【问题描述】:

默认情况下,我所有的控制器和应用程序文件都位于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 有 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;
    }
}

现在,我正在使用 Lightbend 的激活器,就像 Play 框架推荐的那样,但我收到了错误 package chat.model does not exist。我确信这是一个愚蠢的问题,但我正在努力解决它。

我正在使用 IntelliJ,我将 src 标记为源根目录,并且 IntelliJ 可以看到这个类(它没有显示任何错误)

为什么它不起作用?

【问题讨论】:

    标签: java playframework


    【解决方案1】:

    这是因为您已将 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 应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多