Si tengo el contenido de un objeto importado en la parte superior de una hoja de trabajo de Scala en Intellij, cuando agrego cosas nuevas al objeto, no se pueden encontrar en la hoja de trabajo. Incluso después de construir el proyecto y reevaluar la hoja de trabajo, no puede encontrar la nueva propiedad. Obras de autocompletar. Si salgo y reinicio IntelliJ, funciona.

Este es el error:

java.lang.NoSuchMethodError: Arith$.foo()Ljava/lang/String;
    at #worksheet#.get$$instance$$res6(ArithWS.sc:15)
    at A$A1$.main(ArithWS.sc:41)
    at #worksheet#.#worksheet#(ArithWS.sc)

Extrañamente, parece compilarse, pero falla en tiempo de ejecución. Este es un proyecto SBT normal. IntelliJ 2017.2.5, Scala 2.12.3. Seleccionar la casilla de verificación "Crear proyecto" no ayuda. En realidad, ninguna combinación de casillas de verificación lo hace funcionar. Tampoco ayuda la reconstrucción del proyecto o la hoja de trabajo. Solo reiniciar IntelliJ hará que la hoja de trabajo recoja el nuevo código.

Código de proyecto de ejemplo en Arith.scala:

object Arith {
  val foo = "foo"
}

Ejemplo de hoja de trabajo ArithWS.sc:

import Arith._

foo
16
postfuturist 19 oct. 2017 a las 05:50

2 respuestas

La mejor respuesta

Esto parece solucionarlo, aunque me encantaría saber por qué la configuración predeterminada está rota, o qué hace esta configuración no documentada: Vaya a Archivo -> Configuración -> Idiomas y marcos -> Scala -> Hoja de trabajo (pestaña) . Anule la selección de "Ejecutar hoja de trabajo en el proceso del compilador".

37
postfuturist 19 oct. 2017 a las 03:06

En caso de que otros terminen aquí tan desconcertados como yo y descubran que lo anterior no resuelve el problema, intente desmarcar la casilla de verificación "Usar servidor de compilación externo para scala" en Preferencias> Compilación, ejecución, implementación> Compilador> Compilador de Scala> Scala Compile Server (también puede acceder a esta vista desde el icono con forma de velocímetro en la parte inferior derecha de Intellij).

Combinado con "Hacer proyecto" en la vista de la hoja de trabajo de Scala, esto parece garantizar que los cambios se compilen correctamente y sean visibles desde la hoja de trabajo.

0
circld 1 ene. 2018 a las 23:40