web-dev-qa-db-de.com

"object index ist kein Mitglied von package views.html" beim Öffnen des Scala Play-Projekts in Scala Ide

Ich habe ein Spielprojekt mit Spiel 2.3.7 erstellt

Im Projektverzeichnis habe ich Activator ausgeführt und den Befehl Eclipse ausgeführt, um Eclipse-Projektdateien zu erstellen.

Wenn ich zu Eclipse gehe (ich verwende die Scala IDE von typesafe Build id: 4.0.0-vfinal-20150119-1023-Typesafe), liegt in meiner Application.scala-Datei ein Fehler vor:

object index is not a member of package views.html

Ist bei meinem Setup etwas nicht in Ordnung? Die App läuft einwandfrei, wenn ich run an der Eingabeaufforderung der Aktivierungskonsole ausführe.

Vielen Dank!

BEARBEITEN: Code hinzugefügt

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller {

  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }

} 

Der Fehler befindet sich in der Zeile "Ok ..".

Es gibt eine Datei in Ansichten mit dem Namen index.scala.html, und die App führt die Datei aus, wenn ich sie vom Aktivator aus ausführen lasse.

33
user384842

Gelegentlich wird IntelliJ IDEA nach dem Hinzufügen einer Ansicht in Play 2.4.x manchmal verwirrt und lehnt die Erstellung absolut ab. Selbst das Wiederaufbauprojekt schlägt fehl:

 enter image description here

Dies geschieht immer noch von Zeit zu Zeit in IDEA 15. Und wenn dies der Fall ist, bietet die Befehlszeile die schnellste und zuverlässigste Lösung:

sbt sauber; sbt kompilieren

Das ist es! IDEA kompiliert das Projekt jetzt wie erwartet.

Aktualisieren:

In dem seltenen Fall, dass sbt compile erfolgreich in der Befehlszeile ausgeführt wurde, aber IntelliJ IDEA 15 immer noch den gleichen Fehler "Objekt x ist kein Mitglied" ausgibt, hat dies die Verwirrung von IDEA gelöst:

Dateimenü:

 enter image description here

25
Brent Faust

Die anderen Lösungen haben bei mir nicht funktioniert. Einige gaben mir andere Fehler, andere löschten die Registerkarte "Probleme", belassen mich jedoch mit einem roten Squiggle unter views.html.index und die automatische Vervollständigung funktioniert nicht mit den Vorlagen scala.html.

Was schließlich funktioniert hat war, die Eigenschaften des Projekts zu öffnen, zu Java Build Path > Source zu gehen und die beiden folgenden Verzeichnisse hinzuzufügen:

target/scala-2.11/src_managed/main
target/scala-2.11/twirl/main

Wenn Sie nur target/scala-2.11/twirl/main ausführen, verpassen Sie die aus dem conf-Verzeichnis generierten Klassendateien.

12
einnocent

In Scala IDE 4.0.0 denkt, es gibt Fehler in einem Out-of-the-Box-Programm Play Framework 2.3.7 Sie können die Lösung finden (kurz: Hinzufügen des Ordners target/scala-2.11/twirl/main zum Kompilierungspfad). Versuche es.

8

Ich hatte das gleiche Problem. Ich fügte target/scala-2.x/classes und target/scala-2.x/classes_managed zu meinem Java-Erstellungspfad hinzu und Eclipse hörte auf, sich zu beschweren.

4
Chip France

Ich hatte das gleiche Problem mit Play 2.4.0-RC1 unter Verwendung des Standard-SBT-Layouts (disablePlugins(PlayLayoutPlugin)) und löste es durch Hinzufügen zu build.sbt:

sourceDirectories in (Compile, TwirlKeys.compileTemplates) :=
    (unmanagedSourceDirectories in Compile).value
2
Lera

Das Hinzufügen von target/scala-2.11/twirl/main mit views.html-Paket zur Quelle wurde für mich behoben.

2
Surya Prabhakar

@brent-fousts Antwort funktionierte bei mir aber nur anfangs. Jedes Mal, wenn ich das Projekt von IDEA aus neu aufbaute, würde ich "not found: routing" -Fehler in target\scala-2.11\twirl\main\views\html\main.template.scala erhalten, bis ich wieder Brent's Workaround durchführte.

Ich fand schließlich heraus, dass die Lösung dazu eine Zeile in der .iml-Datei geändert hat

<excludeFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" />

zu

<sourceFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" isTestSource="false" />

Ich weiß nicht, welche langfristigen Auswirkungen dies hat, aber es hat dieses Problem behoben. Einige der anderen ähnlichen Probleme, die erwähnt werden, können ebenfalls behoben werden, indem dieselbe Änderung auf einige der anderen in der .iml aufgelisteten Ordner angewendet wird.

1
David Hinson

1) Fügen Sie Ihrer Datei sbt.build die folgende Zeile hinzu:

EclipseKeys.preTasks := Seq(compile in Compile)

2) Fügen Sie der Datei plugins.sbt im Projektordner die folgende Zeile hinzu:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.1.0")

3) Führen Sie den Befehl "Eclipse" in sbt aus

wie in der Dokumentation des Spiel-Frameworks erläutert:

Einrichten Ihrer bevorzugten IDE

0
user2038596

Grundsätzlich brauchen wir einen Weg, um die kompilierten Klassen auf den Weg zu bringen, damit dies funktioniert.

Ich habe Folgendes getan, um das Problem zu beheben .. __ Da die Projekte in das target-Verzeichnis .. __ kompiliert wurden, ging ich zum Project Properties -> Java-Erstellungspfad und fügte einige Ordner hinzu, die folgendermaßen aussehen

target/scala-2.12/routen/main target/scala-2.12/twirl target/scala-2.12/twirl/main

Jetzt möchte ich nicht, dass Sie davon ausgehen, dass Sie genau diese Ordner auch in Ihrem Fall haben werden. Das hängt von Ihrem Projekt-Setup ab. Sie sollten jedoch die Ordner im Ordner target/scala-2.x hinzufügen.

0

Wenn ich das Projekt in intellij importiere, vergewissere ich mich, dass das Kontrollkästchen "Auto import" aktiviert ist.

0
Tomer Ben David

Ich habe alle Lösungen ohne positives Ergebnis ausprobiert.
Also ging ich zu Preferences > Build, Execution, Deployment > Build Tools > sbt und geprüft Use sbt Shell für Importe und Builds.
Dies lässt die Kompilierungsschaltfläche in Intelligence mit der sbt-Shell kompilieren. Ich denke, das ist sowieso besser, da ein Build-Server oder ähnliches auf die gleiche Weise kompiliert wird und nicht wie Intelligenz.

0
Nabil A.