2016-07-24 63 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

相關問題