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.
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:
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:
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
.
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.
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.
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
L'ajout de target/scala-2.11/twirl/main
qui corrige le package views.html
à la source.
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) 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:
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.
Pour moi, lors de l'importation du projet dans intellij, je me suis assuré que la case à cocher "import automatique" était cochée.