2016-07-24 15 views
1

Standardmäßig befinden sich alle meine Controller und App-Dateien im Verzeichnis app. Ich möchte meine anwendungsspezifischen Dateien im Verzeichnis src behalten und app für Framework-spezifischen Code verwenden.Laden von Paketen aus einem anderen Verzeichnis im Play-Framework

So habe ich einen Controller befindet sich in 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)); 
    } 
} 

Und ich habe Message-Klasse in 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; 
    } 
} 

Nun, ich Aktivator von Lightbend bin mit wie Play Rahmen empfiehlt, aber ich habe Fehler package chat.model does not exist. Ich bin sicher, es ist ein dummes Problem, aber ich kämpfe damit.

Ich bin mit IntelliJ, und ich habe src als Quellen Wurzel markiert und IntelliJ diese Klasse sehen (es zeigt keinen Fehler)

Warum es nicht funktionieren?

Antwort

0

Dies passiert, weil Sie IntelliJ IDEA so konfiguriert haben, dass das neue Quellverzeichnis erkannt wird, Sie dieses neue Verzeichnis jedoch nicht zu sbt-Konfigurationen hinzufügen.

Wie bestätigen? Führen Sie den folgenden Befehl in Ihrer Anwendung Root-Verzeichnis:

sbt "show unmanagedSourceDirectories" 

Die letzte Zeile wird so etwas wie:

[info] List(/your/app/directory/app-2.11, /your/app/directory/app, /your/app/directory/app) 

dass die Liste der Quellverzeichnisse von sbt anerkannt ist. Um ein weiteres Verzeichnis (src), nur follow the docs und fügen Sie die Zeile unten an deine build.sbt Datei:

unmanagedSourceDirectories in Compile += baseDirectory.value/"src" 

Danach, um das Projekt zu IntelliJ wieder importieren - wenn Sie nicht die Auto-Import-Funktion verwenden - und es wird erkennt das Verzeichnis src automatisch. Schließlich können Sie auch die default sbt layout für Ihre Play-Anwendung verwenden.

Verwandte Themen