web-dev-qa-db-fra.com

Étrange bug sbt où je ne peux pas importer le projet sbt car des clés entrent en collision avec elles-mêmes

Après avoir changé mon fichier build.sbt dans IntelliJ, je reçois ce rapport d'erreur étrange où il apparaît que des "clés" (je ne sais pas ce que sont ces clés) entrent en collision avec elles-mêmes. La recherche de ce message d'erreur ne trouve que les demandes d'extraction github dans lesquelles des personnes demandent aux responsables de la maintenance de la bibliothèque de préfixer leurs clés pour éviter les conflits de clés. Comment ces clés IntelliJ intégrées peuvent-elles entrer en collision avec elles-mêmes? Cela n'a aucun sens. Voici l'extrait de la trace de la pile:

Java.lang.RuntimeException: Some keys were defined with the same name but different types: 
'ssExtractBuild' (sbt.Task[org.jetbrains.sbt.structure.BuildData], sbt.Task[org.jetbrains.sbt.structure.BuildData]), 
'settingData' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.SettingData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.SettingData]]), 
'taskData' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.TaskData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.TaskData]]), 
'extractStructure' (sbt.Task[org.jetbrains.sbt.structure.StructureData], sbt.Task[org.jetbrains.sbt.structure.StructureData]), 
'ssExtractDependencies' (sbt.Task[org.jetbrains.sbt.structure.DependencyData], sbt.Task[org.jetbrains.sbt.structure.DependencyData]), 
'ssExtractProjects' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.ProjectData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.ProjectData]]), 
'ssExtractAndroid' (sbt.Task[scala.Option[org.jetbrains.sbt.structure.AndroidData]], sbt.Task[scala.Option[org.jetbrains.sbt.structure.AndroidData]]), 
'ssExtractRepository' (sbt.Task[scala.Option[org.jetbrains.sbt.structure.RepositoryData]], sbt.Task[scala.Option[org.jetbrains.sbt.structure.RepositoryData]]), 
'ssOptions' (org.jetbrains.sbt.Options, org.jetbrains.sbt.Options), 
'commandData' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.CommandData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.CommandData]]), 
'ssExtractProject' (sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.ProjectData]], sbt.Task[scala.collection.Seq[org.jetbrains.sbt.structure.ProjectData]]), 
'ssExtractPlay2' (sbt.Task[scala.Option[org.jetbrains.sbt.structure.Play2Data]], sbt.Task[scala.Option[org.jetbrains.sbt.structure.Play2Data]])

Et la trace complète de la pile est ici: https://Pastebin.com/ymZvgMCj

Cela s'est produit après que j'ai ajouté une dépendance à mon build.sbt. J'ai d'abord pensé que c'était le problème et j'ai essayé de le supprimer, mais maintenant, mon build.sbt ne fonctionne même pas dans son état précédent! J'ai effacé le cache de mon intellij, redémarré, supprimé mon dossier .idea dans ce projet et réimporté l'intégralité du projet dans intellij, et j'ai toujours le même problème. Qu'est-ce qui aurait pu se passer entre la dernière fois que j'ai changé mon build.sbt et maintenant que le projet serait cassé de la sorte?

27
K. M

Moi aussi j'ai eu le même problème, je l'ai "corrigé" en analysant et en réinstallant IntelliJ. 

Version Intellij: IntelliJ IDEA 2017.2.5 Version n ° IU-172.4343.14 Version du plug-in Scala: 2017.2.13

Les étapes qui n'ont pas fonctionné

  • Changer de branche
  • Invalider les caches/redémarrer
  • Suppression du répertoire .idea et réimportation
  • Modification de la configuration SBT pour ne pas utiliser le fichier jar fourni 
2
rahilb

Aller à 

Preference -> Build, Execution, Deployment 
                  -> SBT 
                      -> check "Use SBT Shell for build and import" 
                           -> Press OK

Vous pouvez maintenant actualiser les projets SBT et cela devrait fonctionner. si vous voulez, vous pouvez décocher "Utiliser SBT Shell pour construire et importer" et cela fonctionnera

61
feleio

J'avais juste la même erreur avec la dernière version 2017.3 EAP de Idea . Je ne pouvais pas importer un projet et j'ai la même erreur . Le correctif pour moi était de changer de branche, d'importer le projet (qui réussi), puis revenez à la branche d'origine et réimportez le projet dans Idea (cliquez sur le bouton d'actualisation de sbt).

Il n’ya jamais eu de problème d’exécution de sbt dans un terminal, seulement dans Idea . Cela ressemble à un problème d’Idée ...

2
Allan

Dans mon cas, j'avais un module python. Renommé en externe et intellij ne parvient à rien à faire avec la structure des modules. Y compris sbt rafraichir.

Utiliser sbt Shell n'a pas résolu le problème. Invalider le cache et redémarrer n'aidait pas aussi.

J'ai à supprimer le sbt.xml dans le dossier projet/.idea .

Cela effacera vos paramètres sbt actuels. Ce n'était pas une offre puisque sbt ne fonctionnait pas du tout.

1
Douglas Liu

J'ai également rencontré ce problème lorsque j'ai développé Spark avec Intellij Idea et je résous ce problème en remplaçant "Fichier -> Paramètres -> Outils de construction -> sbt -> Modules de groupe" par "en utilisant des noms qualifiés" 

et cochez la case "Fichier -> Paramètres -> Outils de construction -> sbt -> Utiliser sbt Shell pour construire et importer".

0
user9547302