J'essaie juste d'exécuter une simple application Hello World dans Scala sur Intellij avec SBT mais même cela ... cela semble être beaucoup trop difficile.
J'ai suivi les instructions ici: https://www.cloudera.com/tutorials/setting-up-a-spark-development-environment-with-scala/.html
Je travaille avec Eclipse et Maven ... Ici, je suis sur Intellij et SBT donc je fais de mon mieux mais je suis un peu perdu. Voici ce que j'ai fait:
object HelloScala {
def main(args: Array[String]): Unit = {
println("Hello world!")
}
}
Lorsque j'essaie d'exécuter ce principal, il en résulte l'erreur suivante:
Erreur: scalac: plusieurs fichiers 'scala-library * .jar' (scala-library-2.13.0.jar, scala-library-2.13.0.jar) dans Scala chemin de classe du compilateur dans = Scala SDK sbt: org.scala-lang: scala-library: 2.13.0: jar
Mon build.sbt:
name := "HelloScala"
version := "0.1"
scalaVersion := "2.13.0"
J'ai vérifié le chemin de classe du compilateur dans Fichier> Structure du projet> Bibliothèques> Chemin de classe du compilateur:
fichier: ///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar
Fichier : ///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0/scala-compiler-2.13. 0.jar
Fichier : ///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.0/scala-library-2.13. 0.jar
Fichier : ///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.0/scala-reflect-2.13. 0.jar
J'ai essayé de supprimer le répertoire cible, d'invalider le cache, de régénérer le dossier .idea en le supprimant et de laisser intellij le recréer, j'ai cherché dans un autre scala-library.jar dans la structure du projet. Je n'ai rien trouvé...
Vraiment ... Je ne comprends pas pourquoi la scala-library est référencée deux fois.
Si je change la version scala de 2.13.0 à 2.11.0, même problème:
Erreur: scalac: plusieurs fichiers 'scala-library * .jar' (scala-library-2.11.0.jar, scala-library-2.11.0.jar) dans Scala chemin de classe du compilateur dans = Scala SDK sbt: org.scala-lang: scala-library: 2.11.0: jar
MAIS ! Si je commente la version scala dans le build.sbt:
name := "HelloScala"
version := "0.1"
//scalaVersion := "2.11.0"
Ensuite, si j'efface le répertoire cible, réimporte le projet sbt et essaie de l'exécuter, cela fonctionne! Et dans le répertoire cible, j'ai un nouveau dossier scala-2.12 ... D'où il vient?!
Pour plus d'informations, je suis sur Windows 10, Intellij 2019.2, JDK 1.8, SBT 13
Toute aide est vraiment appréciée!
Essaye ça:
Bibliothèques externes> [Clic droit] sbt: org.scala-lang: scala-library: x.x.x: jar> Ouvrir les paramètres de la bibliothèque> Paramètres du projet> Bibliothèques
Il y a une section avec les classes, les sources et les JavaDocs. Cliquez sur JavaDocs et supprimez-le avec le signe moins ci-dessus. Cliquez sur OK.
Réimportez votre projet sbt (dans la barre d'outils sbt à droite).
Vous ne savez toujours pas pourquoi l'erreur se produit ou pourquoi cela la corrige.
Je me bats avec le même problème ce week-end avec une nouvelle installation d'IntelliJ IDEA. J'ai essayé différentes versions de l'EDI et certains des autres correctifs suggérés ci-dessus, mais la seule solution qui semblait vraiment fonctionner était de modifier manuellement le fichier .idea/libraries/sbt__org_scala_lang_scala_library_2_13_0_jar.xml
Généré automatiquement pour supprimer les entrées JAR en double.
J'ai finalement fait le lien entre l'erreur et la nouvelle version sbt
quand j'ai remarqué cette boîte de dialogue dans mon shell:
[info] Welcome to sbt 1.3.0.
[info] Here are some highlights of this release:
[info] - Coursier: new default library management using https://get-coursier.io
[info] - Super Shell: displays actively running tasks
[info] - Turbo mode: makes `test` and `run` faster in interactive sessions. Try it by running `set ThisBuild / turbo := true`.
[info] See https://www.lightbend.com/blog/sbt-1.3.0-release for full release notes.
Depuis l'introduction de sbt 1.3.0 Coursier , et les entrées JAR en double dans les fichiers XML générés par IDEA ont toutes été stockées dans un Répertoire cache du coursier , je pensais que le retour à sbt 1.2.8 pourrait résoudre le problème.
Effectivement, je ne reçois l'erreur "Multiple 'scala-library * .jar' files" lors de l'utilisation de sbt 1.3.0. J'ai recréé mon projet plusieurs fois et je n'ai pas vu l'erreur lors de l'utilisation de sbt 1.2.8.
Si vous n'avez pas de propriété scalaVersion dans votre build.sbt
, sbt
utilisera la version spécifiée dans project/build.sbt