2017-10-19 105 views
5

Jeśli mam zawartość obiektu importowanego na górze arkusza Scala w Intellij, kiedy dodaję nowe rzeczy do obiektu, nie można ich znaleźć w arkusz roboczy. Nawet po zbudowaniu projektu i ponownej ocenie arkusza roboczego nie można znaleźć nowej właściwości. Autouzupełnianie działa. Jeśli wyjdę i uruchomę ponownie IntelliJ, działa.IntelliJ: Arkusz Scala nie pobiera zmian kodu bez restartu

Jest to błąd:

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) 

Niesamowicie, wydaje się skompilować, ale nie w czasie wykonywania. To normalny projekt SBT. IntelliJ 2017.2.5, Scala 2.12.3. Zaznaczenie pola wyboru "Utwórz projekt" nie pomoże. W rzeczywistości żadna kombinacja pól wyboru nie działa. Nie pomaga także żadna ilość przebudowy projektu lub arkusza roboczego. Tylko ponowne uruchomienie IntelliJ spowoduje pobranie arkusza w celu pobrania nowego kodu.

Przykład kod projektu w Arith.scala:

object Arith { 
    val foo = "foo" 
} 

Przykład arkusza ArithWS.sc:

import Arith._ 

foo 

Odpowiedz

7

Wydaje się to naprawić, chociaż chciałbym miłość wiedzieć dlaczego ustawienie domyślne jest zepsute, lub co to nieudokumentowane ustawienie robi: Przejdź do Plik -> Ustawienia -> Języki & Szkielety -> Scala -> Arkusz roboczy (karta). Odznacz "Uruchom arkusz roboczy w procesie kompilatora".

0

W przypadku, gdy inni kończą tutaj jako oszołomieni jak byłem i stwierdzam, że powyższe nie rozwiązuje problemu, odznacz pole wyboru "Użyj zewnętrznego serwera kompilacji dla scala" w Preferencje> Kompilacja, wykonanie, wdrożenie> Kompilator > Scala Compiler> Scala Compile Server (możesz również dostać się do tego widoku z ikony podobnej do prędkościomierza w prawym dolnym rogu Intellij).

W połączeniu z "Utwórz projekt" w widoku arkusza Scala, wydaje się, że zmiany są poprawnie skompilowane i widoczne z poziomu arkusza roboczego.