source run invalid intellij error java scala compiler-construction compilation intellij-idea

run - error:java: invalid source release: 10



¿Cómo hacer que IntelliJ IDEA use javac para Java y scalac para Scala? (3)

Debería considerar usar un conjunto de administración de dependencias como Apache Ivy o Apache Maven. Luego, coloque su fuente Java en un artefacto separado y haga que su proyecto Scala dependa del artefacto del proyecto Java.

Si vas a la ruta Maven, hay un complemento Scala .

En mi proyecto IDEA, un módulo Scala depende de un módulo Java. Cuando intento compilar el módulo Scala, solo se activa Scalac. Compila las fuentes de Java y Scala.

Me gustaría que Scalac compile solo el módulo de Scala, porque javac es mucho más rápido para las fuentes de Java (y mi proyecto de Java es uno grande). ¿Cómo hacer que IDEA use un compilador diferente para diferentes módulos?

Mi solución alternativa es (para cada dependencia del módulo de Java):

  1. Eliminar la dependencia del módulo en la configuración del proyecto
  2. Agregue dependencia al directorio de salida de compilación apropiado "MyJavaModule / target / classes"

Obviamente no estoy contento con eso, porque cada vez que reimporto el proyecto Maven necesito repetir todo esto para tener una compilación rápida. Espero que alguien sepa una mejor manera.

Aclaración: me gustaría enfatizar que las herramientas como SBT o Maven no resuelven mi problema. No se trata solo de compilación. Se trata de la compilación en IDEA, que se requiere para cosas como la Hoja de trabajo de Scala o las pruebas de unidad móvil de IDEA. Mi objetivo es tener una gama completa de detalles de IDEA (resaltado de sintaxis, autocompletado inteligente, importaciones automáticas, etc.) con la velocidad de compilación de SBT. Ahora debo tolerar largos tiempos de compilación (debido a las dependencias con mi módulo Java) o usar REPL escueto y probar en SBT.


Probablemente, la forma más sencilla de compilar los archivos Scala y Java es SBT - Simple Build Tool. Simplemente cree un proyecto (+ agregue dependencias, etc.) y compílelo. La compilación de Scala + Java funciona de la caja. Cambié a SBT de Maven.

Si tiene un POM complejo o si tiene otra razón para no migrar a SBT, puede intentar configurar el POM. Solo agregar (y posiblemente configurar) el complemento Scala debería ser suficiente. Espero que no rompa el soporte de Java.


Randall Schulz formuló la pregunta correcta en el comentario: " ¿Por qué importa qué herramienta es la compilación? ". Hasta ahora, creía que IDEA tenía que compilar todas las clases por sí mismo si desea usar sus características agradables (como la consola Scala de IDEA o ejecutar pruebas desde dentro). Estaba equivocado.

De hecho, IDEA recogerá las clases compiladas por cualquier otra herramienta (como el gran SBT, por ejemplo). Solo necesita asegurarse de que todas las clases estén actualizadas antes de usar cualquiera de las funciones útiles de IDEA. La mejor manera de hacerlo es:

  1. iniciar compilación incremental continua en segundo plano (por ejemplo, emitiendo "~ compile" en SBT)
  2. eliminar el paso "hacer" en las configuraciones de ejecución de IDEA

¡Eso es todo! A continuación, puede utilizar todas las características interesantes de IDEA (no solo resaltado de sintaxis y finalización de código, sino todas las importaciones automáticas en Scala Console, ejecutando rápidamente las pruebas de unidades seleccionadas) sin cambiar entre las diferentes ventanas. ¡Ese es el flujo de trabajo que me perdí hasta ahora! Gracias a todos por todos los comentarios sobre el tema.