2016-07-24 93 views
1

默认情况下,我的所有控制器和应用程序文件都位于app目录中。我想保留我的应用程序特定文件在src目录中,并使用app获取特定于框架的代码。从Play框架中的另一个目录加载软件包

所以我有一个控制器位于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; 
    } 
} 

Message类现在,我使用的活化剂由Lightbend喜欢玩框架建议,但我得到错误package chat.model does not exist。我确信这是一个愚蠢的问题,但我一直在努力。

使用的IntelliJ我',我已经标记为src来源根,和IntelliJ可以看到这个类(它不显示任何错误)

为什么它不工作?

回答

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目录。最后,您还可以在Play应用程序中使用default sbt layout

相关问题