scala intellij-idea sbt

scala-library importado dos veces?



intellij-idea sbt (3)

Solo estoy tratando de ejecutar una aplicación simple Hello World en Scala en Intellij con SBT pero incluso esto ... parece ser demasiado difícil.

Seguí las instrucciones aquí: https://www.cloudera.com/tutorials/setting-up-a-spark-development-environment-with-scala/.html

Solía ​​trabajar con Eclipse y Maven ... Aquí estoy en Intellij y SBT, así que hago todo lo posible pero estoy un poco perdido. Esto es lo que hice:

  • Instalé Intellij, SBT.
  • Configuré el iniciador SBT en Intellij configurando Archivo> Configuración> Compilación, Ejecución, Implementación> Herramientas de compilación> sbt> Iniciador
  • Cree un nuevo proyecto con Java 1.8, SBT 1.3, Scala 2.13
  • En este paso no pude crear la clase Scala, pero noté que si "Reimporto el proyecto sbt", la clase scala aparecerá en la lista de nuevos elementos para crear.
  • Crea un objeto con el método principal:

object HelloScala { def main(args: Array[String]): Unit = { println("Hello world!") } }

Cuando intento ejecutar ese archivo principal, aparece el siguiente error:

Error: scalac: Múltiples archivos ''scala-library * .jar'' (scala-library-2.13.0.jar, scala-library-2.13.0.jar) en el classpath del compilador Scala en Scala SDK sbt: org.scala-lang: scala-library: 2.13.0: jar

Mi build.sbt:

name := "HelloScala" version := "0.1" scalaVersion := "2.13.0"

Revisé la ruta de clase del compilador en Archivo> Estructura del proyecto> Bibliotecas> Ruta de clase del compilador:

archivo: ///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/jline/jline/2.14.6/jline-2.14.6.jar
archivo: ///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0/scala-compiler-2.13.0.jar
archivo: ///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.0/scala-library-2.13.0.jar
archivo: ///AppData/Local/Coursier/cache/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.0/scala-reflect-2.13.0.jar

Traté de eliminar el directorio de destino, invalidar el caché, regenerar la carpeta .idea eliminándolo y dejar que intellij lo recreara, busqué desde otro scala-library.jar en la estructura del proyecto. No he encontrado nada ...

Realmente ... No entiendo por qué se hace referencia a la biblioteca scala dos veces.

Si cambio la versión de scala de 2.13.0 a 2.11.0, el mismo problema:

Error: scalac: Múltiples archivos ''scala-library * .jar'' (scala-library-2.11.0.jar, scala-library-2.11.0.jar) en el classpath del compilador Scala en Scala SDK sbt: org.scala-lang: scala-library: 2.11.0: jar

PERO ! Si comento la versión scala en build.sbt:

name := "HelloScala" version := "0.1" //scalaVersion := "2.11.0"

Luego, si borro el directorio de destino, vuelvo a importar el proyecto sbt e intento ejecutarlo, ¡funciona! Y en el directorio de destino, tengo una nueva carpeta scala-2.12 ... ¡¿De dónde demonios viene ?!

Para obtener información, estoy en Windows 10, Intellij 2019.2, JDK 1.8, SBT 13

¡Cualquier ayuda es muy apreciada!


TL; DR

Revierta sus proyectos de IDEA a sbt 1.2.8

Detalles

He estado luchando con el mismo problema este fin de semana con una nueva instalación de IntelliJ IDEA. Probé diferentes versiones del IDE, y algunas de las otras soluciones sugeridas anteriormente, pero la única solución que realmente pareció funcionar fue editar manualmente el archivo .idea/libraries/sbt__org_scala_lang_scala_library_2_13_0_jar.xml generado .idea/libraries/sbt__org_scala_lang_scala_library_2_13_0_jar.xml para eliminar las entradas JAR duplicadas.

Finalmente hice la conexión entre el error y la nueva versión de sbt cuando noté este diálogo en mi 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.

Como sbt 1.3.0 introdujo Coursier , y las entradas JAR duplicadas en los archivos XML generados por IDEA se almacenaron en un directorio de caché de Coursier , pensé que volver a sbt 1.2.8 podría solucionar el problema.

Efectivamente, solo obtengo el error "Varios archivos ''scala-library * .jar''" cuando uso sbt 1.3.0. Volví a crear mi proyecto varias veces y no he visto el error al usar sbt 1.2.8.


Prueba esto:

Bibliotecas externas> [Click derecho] sbt: org.scala-lang: scala-library: xxx: jar> Abrir configuración de biblioteca> Configuración de proyecto> Bibliotecas

Hay una sección con Clases, Fuentes y JavaDocs. Haga clic en JavaDocs y elimínelo con el signo menos arriba. Haga clic en Aceptar.

Vuelva a importar su proyecto sbt (en la barra de herramientas sbt a la derecha).


Todavía no estoy seguro de por qué ocurre el error o por qué esto lo soluciona.


Si no tiene una propiedad scalaVersion en su build.sbt , sbt usará la versión especificada en project/build.sbt