86 votes

Échecs de la compilation Intellij : "est déjà défini comme"

J'ai un projet scala qui se compile, s'exécute et se teste correctement lorsque j'utilise SBT en 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])
       ^

161voto

jiangok Points 2242

Pour moi, la raison en est que les deux myproject/src y myproject/src/main/scala sont marquées comme Source. Ainsi, intellij n'a pas réussi à construire myproject/src/main/scala en raison des erreurs susmentionnées. Source non marquée de myproject/src (dans intellij, File->Project structure, select myproject Module, select src folder in Sources Tab, remove it from Source in the "Add Content Root" pane) a résolu le problème. J'espère que cela vous aidera.

41voto

Max Points 272

Cela signifie qu'il y a deux classes compilées avec un nom de paquetage et de classe identique dans votre chemin de classe. L'une compilée par sbt, l'autre compilée par IntelliJ.

L'une des solutions suivantes devrait permettre de résoudre le problème :

  1. essayer de générer le fichier .iml d'IntelliJ avec sbt-idea plutôt que d'importer directement.
  2. sbt clean avant de cliquer sur Build -> Rebuild dans IntelliJ
  3. lors de la reconstruction avec IntelliJ, assurez-vous que sbt n'est pas en cours d'exécution

10voto

Dexter Legaspi Points 404

J'ai rencontré ce problème aujourd'hui sur IntelliJ 2021.2.1 et d'après cette page c'est un problème avec le compilateur incrémental d'IntelliJ pour Scala, donc la solution est de changer le "Type d'incrémentalité" de "IDEA" à "Zinc" dans Préférences -> Construction, Exécution, Déploiement -> Compilateur -> Compilateur Scala

5voto

Baztoune Points 1030

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 proposée n'a pas fonctionné pour moi. Il s'avère que j'utilisais sbt-idea pour générer la structure du projet IDEA en tant que solution de contournement d'un problème de Intellij IDEA 14 + bug du plugin scala sur l'importation SBT, qui n'est pas encore corrigée à l'heure où j'écris ces lignes.

Pour y remédier, j'ai dû supprimer src_managed/main/controller qui était en conflit avec src_managed/main dans les paramètres du module en raison d'un bug sbt-idea . Vérifiez donc deux fois les dossiers sources de vos modules et assurez-vous que vous n'avez pas de sous-dossiers en conflit avec un dossier parent déjà déclaré comme source.

4voto

425940330 Points 41

Vous devez changer "Settings -> Build,Execution,Deployment -> Scala Compiler -> Compile order" de "Mixed" à "Java then Scala". Si vous avez déjà compilé le projet, vous devez d'abord exécuter "sbt clean".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X