J'ai un projet scala qui compile, exécute et teste correctement lors de l'utilisation de SBT à partir de la ligne de commande. Cependant, lors de la construction du projet dans intellij, il semble que chaque classe du projet ait cette erreur dans le journal des événements, ce qui entraîne l'échec de la construction:
SendCommandToService is already defined as case class SendCommandToService
case class SendCommandToService(service: String, commandName: String, keys: Array[String], values: Array[String])
^
Cela signifie que deux classes compilées avec un paquet et un nom de classe identiques se trouvent dans votre chemin de classe. Un compilé par sbt, un compilé par IntelliJ.
L'un des éléments suivants devrait pouvoir résoudre le problème:
Pour moi, la raison en est que myproject/src
et myproject/src/main/scala
sont marqués comme source. Donc, intellij n'a pas réussi à construire myproject/src/main/scala
en raison des erreurs ci-dessus. Unmark Source from myproject/src
(dans intellij, Fichier-> Structure du projet, sélectionnez Module myproject, sélectionnez le dossier src dans l’onglet Sources, supprimez-le de la source dans le volet "Ajouter une racine de contenu") a résolu le problème. J'espère que cela t'aides.
J'ai eu le même problème et @Max a raison, il y a un conflit avec les classes compilées, mais la solution fournie n'a pas fonctionné pour moi. Il s’est avéré que j’utilisais sbt-idea pour générer la structure de projet IDEA en tant que solution de contournement d’un bogue Intellij IDEA 14 + du plugin scala sur l’importation SBT, qui n’a pas encore été corrigée. au moment où j'écris ceci.
Afin de résoudre ce problème, j'ai dû supprimer src_managed/main/controller
qui était en conflit avec src_managed/main
dans les paramètres du module à cause d'un bogue sbt-idea . Vérifiez donc les dossiers source de votre module et assurez-vous de ne pas avoir de sous-dossiers en conflit avec un dossier parent déjà déclaré en tant que source.
J'ai eu un problème similaire à plusieurs reprises dans Idea et sans: SBT simple.
Il s'est avéré que CVS stocke des copies de certains fichiers * .scala dans le sous-répertoire CVS/Base, que SBT tente apparemment de compiler. Le problème a disparu lorsque j'ai supprimé les sous-répertoires CVS.
Vous devez modifier "Paramètres -> Construire, Exécution, Déploiement -> Compilateur Scala -> Ordre de compilation" de "Mixte" en "Java, puis Scala". Si vous avez compilé le projet précédent, vous devez d’abord exécuter "sbt clean".
Dans mon cas, le problème était le protobuf plugin Idea :
Après la compilation de sbt, je devais marquer le dossier comme Generated Sources Root parce que j'avais besoin de ces fichiers pour la compilation.
J'ajouterai simplement le mien à la liste au cas où quelqu'un d'autre ferait cette erreur de débutant: j'ai temporairement "sauvegardé ma progression" en faisant cp Foo.scala Foo-save.scala
, en oubliant que sbt essaierait de compiler tous les fichiers .scala
du répertoire.
(Je ne sais pas, je pense que je pensais aux langages de programmation où tout fichier non explicitement include
d était ignoré ...)
Bien sûr, puisque le fichier principal et le fichier de "sauvegarde temporaire" définissaient les mêmes classes ... oui.