web-dev-qa-db-fra.com

"index objet n'est pas membre du paquetage views.html" lors de l'ouverture du projet scala play dans scala ide

J'ai créé un projet de jeu avec le jeu 2.3.7

Dans le répertoire du projet, j'ai exécuté activator et la commande Eclipse pour générer les fichiers de projet Eclipse.

Lorsque je vais sur Eclipse (j'utilise Scala IDE à partir de l'ID de compilation typesafe: 4.0.0-vfinal-20150119-1023-Typesafe, une erreur s'est produite dans mon fichier Application.scala:

object index is not a member of package views.html

Y at-il quelque chose qui cloche dans ma configuration? L'application fonctionne correctement lorsque j'exécute run à l'invite de la console d'activation.

Merci!

EDIT: Code ajouté

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."))
  }

} 

L'erreur est sur la ligne 'Ok ..'.

Il existe un fichier dans les vues appelé index.scala.html, et l'application exécute le fichier lorsque je l'exécute à partir de l'activateur.

33
user384842

Parfois, après avoir ajouté une vue dans Play 2.4.x, IntelliJ IDEA est parfois confus et refuse absolument de créer. Même la reconstruction du projet échoue:

 enter image description here

Cela se produit encore de temps en temps dans IDEA 15. Et le cas échéant, la ligne de commande fournit le correctif le plus rapide et le plus fiable:

sbt propre; compiler

C'est tout! IDEA va maintenant compiler le projet comme prévu.

Mettre à jour:

Dans les rares cas où sbt compile s'est terminé avec succès sur la ligne de commande, mais que IntelliJ IDEA 15 donne toujours la même erreur "l'objet n'est pas membre", la confusion d'IDEA a été résolue:

Menu Fichier:

 enter image description here

25
Brent Faust

Les autres solutions ne fonctionnaient pas pour moi. Certains me donneraient des erreurs différentes, d'autres effaceraient l'onglet Problèmes mais me laisseraient un gribouillage rouge sous views.html.index et l'auto-complétion ne fonctionnerait pas avec les modèles scala.html.

Ce qui a finalement fonctionné a été d'ouvrir les propriétés du projet, d'aller à Java Build Path > Source et d'ajouter les deux répertoires suivants:

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

Si vous ne faites que target/scala-2.11/twirl/main, alors vous manquerez les fichiers de classe générés à partir du répertoire conf.

12
einnocent

Dans Scala IDE 4.0.0 pense qu’il existe des erreurs dans un programme Play Framework 2.3.7 prêt à l'emploi vous pouvez trouver la solution (en bref: ajouter un dossier target/scala-2.11/twirl/main au chemin de compilation), Essaie.

8
Luis Rodero-Merino

J'ai eu le même problème. J'ai ajouté target/scala-2.x/classes et target/scala-2.x/classes_managed à mon chemin de génération Java et Eclipse a cessé de se plaindre.

4
Chip France

J'avais le même problème sous Play 2.4.0-RC1 en utilisant la disposition par défaut de SBT (disablePlugins(PlayLayoutPlugin)) et je l'ai résolu en ajoutant à build.sbt:

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

L'ajout de target/scala-2.11/twirl/main qui corrige le package views.html à la source.

2
Surya Prabhakar

La réponse de @brent-foust a fonctionné pour moi, mais seulement au début. Chaque fois que je reconstruisais le projet depuis IDEA, des erreurs "not found: routes" apparaissaient dans target\scala-2.11\twirl\main\views\html\main.template.scala jusqu'à ce que je répète la solution de Brent.

J'ai finalement découvert que la solution consistait à changer une ligne du fichier .iml à partir de

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

à

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

Je ne sais pas ce que cela implique à long terme, mais le problème a été résolu. Certains des autres problèmes similaires mentionnés peuvent également être résolus en appliquant la même modification à certains des autres dossiers répertoriés dans le fichier .iml.

1
David Hinson

1) Ajoutez la ligne suivante à votre fichier sbt.build:

EclipseKeys.preTasks := Seq(compile in Compile)

2) Ajoutez la ligne suivante dans votre fichier plugins.sbt sous le dossier du projet:

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

3) Exécutez la commande "Eclipse" à partir de sbt

comme expliqué dans la documentation du cadre de jeu:

Configuration de votre IDE préféré

0
user2038596

Fondamentalement, nous avons besoin d’un moyen de mettre les classes compilées sur le chemin pour que cela fonctionne.

J'ai procédé comme suit pour résoudre le problème. Les projets étant compilés dans le répertoire target ..., je suis allé dans le chemin Project Properties -> Java et j'ai ajouté quelques dossiers ressemblant à ceci,

target/scala-2.12/routes/main target/scala-2.12/twirl cible/scala-2.12/twirl/main

Maintenant, je ne veux pas que vous supposiez que vous aurez aussi ces dossiers exacts dans votre cas. Cela dépend de la configuration de votre projet . Mais vous devez ajouter les dossiers du dossier target/scala-2.x.

0

Pour moi, lors de l'importation du projet dans intellij, je me suis assuré que la case à cocher "import automatique" était cochée.

0
Tomer Ben David