2013-11-27 4 views
34

Ich habe ein Scala Play-Projekt. Ich benutze Play 2.2.1. Ich habe Scala, Play 2 und SBT Plugins heruntergeladen. Alles ist in Ordnung, aber wenn ich Route in Aktion rufen Sie im Controller erscheinen folgende Fehler (Screenshots sehen):IntelliJ IDEA Report Fehler bei der Verwendung von Routen im Controller

Screenshot1

Screenshot2

Ich benutze IntelliJ IDEA Ultimate-Version 12.1.6. Scala Version 2.10.2

Kann jemand dieses Problem beheben?

Vielen Dank im Voraus!


Edit

Wenn ich mein Projekt zu IntelliJ IDEA über "Spielidee" Befehl in Spielkonsole erzeugen, und ich öffnete Projekt in IDEA Projektstruktur so war:

screenshot6

Dann habe ich sah Antwort @millhouse und diskutieren auf diesem githup ([Play 2.2] "play idea" creates not working source mapping in target) und ich entfernte folgende Ordner von Quellen Ordner:

  • target\scala-2.10\src_managed\main\controllers
  • target\scala-2.10\src_managed\main\views

und "Report hervorgehoben Fehler" verschwunden, aber jetzt gibt es einen weiteren Fehler:

screenshot3

und

screenshot7

meine Route:

screenshot4

Und ich habe mich verändert "Quellen-Ordner", wie unten dargestellt:

screenshot5

Aber es hilft mir nicht. Und bleibt "Unspezifizierter Wert Parameter" Fehler.

+1

Upgrade auf IntelliJ IDEA 13 und verwenden 'Datei -> Importieren project' und wählen Sie' SBT project'. Das Generieren der Idee-Dateien mit "Spielidee" ist nicht mehr notwendig. –

+1

Hier ist ein Fehlerbericht dafür: https://github.com/playframework/playframework/issues/1784 –

+0

Dies könnte mit dem folgenden Problem zusammenhängen: https://youtrack.jetbrains.com/issue/SCL-7726 – Martin

Antwort

47

millhouses Antwort hat mir geholfen, die richtige Antwort zu finden. Play 2.2 (und vielleicht frühere Versionen, nicht aktiviert) geben eine Scala-Version der routes-Datei an project_dir/target/scala-2.10/src_managed/main aus. Damit IntelliJ die Hervorhebung richtig macht, müssen Sie sicherstellen, dass src_managed/main als Quellordner hinzugefügt wird. Die umgekehrten Routen für Javascript sind aus irgendeinem Grund in project_dir/target/scala-2.10/classes_managed enthalten, so dass Sie auch hinzufügen müssen. (In Ihrem Screenshot sieht es aus wie classes_managed auf ausgeschlossen gesetzt ist, so dass Sie un-ausschließen durch Drücken der x-Taste auf der rechten Seite wollen werden.)

Hier ist ein Screenshot von meiner Projektstruktur:

Working Play 2.2 project structure

aktualisieren:

Im Play 2.3 (oder vielleicht neueren Versionen von IntelliJ) Zugabe des classes_managed nicht mehr das Problem behebt. Anstatt classes_managed zu den Quellen des Projekts hinzuzufügen, fügen Sie es zu seinen Abhängigkeiten hinzu. Dadurch sollte IntelliJ in der Lage sein, die kompilierte routes.class zu übernehmen.

Working Play 2.3 dependency list

+2

Wenn Sie immer noch Fehler bei der Erstellung einer Datei> Invalidate Caches und einen Neustart möglicherweise helfen. –

+0

Vielen Dank es funktioniert in Play 2.2.2 –

+0

Brilliant. Lief wie am Schnürchen! – Karlth

8

Dies ist ein häufiges Problem, dann ist es, weil IntelliJ gezeigt werden muss, wo für die zusammengestellt Scala Vorlagen und routes Datei zu suchen. Hier ist, wie ich es auf meinem IntelliJ 12 behoben habe.1 Installation:

  • Gehen Sie zur Moduleinstellungen für Ihr Projekt in IntelliJ (wählen Sie die Top-Level, schlug F4)
  • Wählen Sie die Module Element im Fenster Projektstruktur, die
  • Wählen Sie das Projektname erscheint Artikel (im Gegensatz zu dem Projektname-build Artikel)
  • hinzufügen das Ausgabeverzeichnis des Compilers auf die Quelle Ordner Artikel;
    • Für Scala 2.10 es ist target/scala-2.10/classes
    • ich persönlich die IntelliJ UI finden diese sehr nicht intuitiv sein; Sie könnten das target Verzeichnis und/oder einem seiner Unterverzeichnisse aus den Ausgeschlossene Ordner erste
  • Nach der Anwendung dieser Änderung nehmen müssen, sollten IntelliJ die Ergebnisse der Zusammenstellung jedes routes und .scala.html Datei als nur-eine andere sehen Quelldatei, so dass sie nicht als "kaputt" angezeigt werden und die automatische Vervollständigung für sie funktionieren sollte.
+0

@ Millhouse Warum sollte "target/scala-2.10/classes/views" nur im Ordner sources hinzugefügt werden? Warum fügen Sie nicht den Ordner "target/scala-2.10/classes/controllers" und "target/scala-2.10/classes/models" hinzu? –

+1

@ mr.boyfox Sie haben recht, ich habe meine Antwort aktualisiert, damit Ihre Vorlagendateien 'routes' und' .scala.html' alle abgerufen werden können. – millhouse

+0

Danke @millhouse, ich versuchte dies, aber ein anderer Fehler erscheint, siehe meine Bearbeitung –