Używam IntelliJ IDEA 13.1.4, a także wypróbowałem najnowszą wersję 14.
Uruchamiając SBT otrzymuję następujący błąd:
Error:Cannot determine Java VM executable in selected JDK
Mam JDK 1.7 zainstalowany na moim komputerze i na PATH.
W dziennikach ( ~/Library/Logs/IntelliJIdea14/idea.log
w systemie MacOS) znajduje się następujący ślad stosu:
2014-11-03 11:22:05,054 [4896641] WARN - nal.AbstractExternalSystemTask - Cannot determine Java VM executable in selected JDK
com.intellij.openapi.externalSystem.model.ExternalSystemException: Cannot determine Java VM executable in selected JDK
at org.jetbrains.sbt.project.SbtExternalSystemManager$$anonfun$10.apply(SbtExternalSystemManager.scala:97)
at org.jetbrains.sbt.project.SbtExternalSystemManager$$anonfun$10.apply(SbtExternalSystemManager.scala:97)
at scala.Option.getOrElse(Option.scala:120)
at org.jetbrains.sbt.project.SbtExternalSystemManager$.executionSettingsFor(SbtExternalSystemManager.scala:96)
at org.jetbrains.sbt.project.SbtExternalSystemManager$$anonfun$getExecutionSettingsProvider$1.apply(SbtExternalSystemManager.scala:54)
at org.jetbrains.sbt.project.SbtExternalSystemManager$$anonfun$getExecutionSettingsProvider$1.apply(SbtExternalSystemManager.scala:54)
at org.jetbrains.sbt.package$$anon$3.fun(package.scala:29)
at org.jetbrains.sbt.package$$anon$3.fun(package.scala:28)
at com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.getExecutionSettings(ExternalSystemApiUtil.java:590)
at com.intellij.openapi.externalSystem.service.ExternalSystemFacadeManager.a(ExternalSystemFacadeManager.java:201)
at com.intellij.openapi.externalSystem.service.ExternalSystemFacadeManager.a(ExternalSystemFacadeManager.java:178)
at com.intellij.openapi.externalSystem.service.ExternalSystemFacadeManager.doInvoke(ExternalSystemFacadeManager.java:133)
at com.intellij.openapi.externalSystem.service.ExternalSystemFacadeManager$MyHandler.invoke(ExternalSystemFacadeManager.java:270)
at com.sun.proxy.$Proxy57.getResolver(Unknown Source)
at com.intellij.openapi.externalSystem.service.internal.ExternalSystemResolveProjectTask.doExecute(ExternalSystemResolveProjectTask.java:48)
at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:137)
at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:123)
at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$2.execute(ExternalSystemUtil.java:475)
at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$3$1.run(ExternalSystemUtil.java:543)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:609)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$7.run(ProgressManagerImpl.java:410)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$3.run(ProgressManagerImpl.java:194)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.a(ProgressManagerImpl.java:281)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:233)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:181)
at com.intellij.openapi.application.impl.ApplicationImpl$10$1.run(ApplicationImpl.java:640)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:405)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)
Jaki może być tego powód?
intellij-idea
sbt
Zuriar
źródło
źródło
Project SDK
dla zdefiniowanego projektu. Czy możesz sprawdzić ustawienia projektu dla danego projektu i zobaczyć ustawienia w obszarze Projekt?Odpowiedzi:
Powinieneś być w stanie to obejść, ustawiając jdk w ustawieniach, a nie w oknie dialogowym otwierania / importowania projektu.
Na ekranie powitalnym przejdź do
Configure -> Project defaults -> Project structure
i dodaj plik jdk.Otwarcie projektu sbt powinno wtedy działać dobrze.
Znalazłem rozwiązanie stąd
źródło
Innym sposobem ustawienia JDK jest użycie aktualnych ustawień modułu / projektu (dla obecnego projektu)
Wybierz
Open Module Settings
z menu kontekstowego projektu (lub domyślnie naciśnij F4),następnie z lewej zakładki wybierz
Project
i wskaż prawidłowoProject SDK
na rozwijanym menu.źródło
Problem jest zwykle spowodowany nieprawidłową wersją JDK w pliku „.idea / sbt.xml”, np .:
Ta opcja nie jest odpowiednio aktualizowana po zmianie zestawu SDK projektu, patrz SCL-10085 . Jeśli masz inny JDK (w moim przykładzie 1.7) ogólnie skonfigurowany, nie wystąpi żaden błąd, ale pakiet Project SDK zostanie po cichu zmieniony z powrotem. W przeciwnym razie wystąpi ten błąd.
Problem można łatwo rozwiązać, ręcznie edytując wartość w pliku „.idea / sbt.xml” do odpowiedniej wersji JDK.
źródło
Ten sam błąd występuje również podczas próby odświeżenia w „zadaniach SBT”.
otwarty
Włączyć
Po zakończeniu odświeżania projektu wyłącz go ponownie, aby włączyć funkcję hotswapping z powrotem po zmianie kodu w edytorze.
źródło
Musiałem otworzyć
Settings -> Language & Frameworks -> Scala Compiler Server
Następnie ustaw tam zestaw JVM SDK, który był
<No SDK>
.Było to oprócz ustawienia zestawu SDK projektu w
Project Structure -> Project
.Zobacz zrzut ekranu tutaj .
źródło
IntelliJ 13.1.6> Plik> Struktura projektu> ustaw Project SDK
źródło
Mam ten sam problem po usunięciu Java 1.6 i Java 1.7 z Project Settings (z Java8 jako domyślną).
Wreszcie rozwiązuję problem, zmieniając konfigurację SBT JVM na niestandardową Javę (Ustawienia -> Kompilacja, Wykonanie, Wdrożenie -> Narzędzia kompilacji -> SBT).
źródło
Dla mnie powyższe sugestie z jakiegoś powodu nie pomogły. Jednak zorientowałem się, że w obszarze Ustawienia domyślne projektu> Struktura projektu (ekran powitalny) mój domyślny zestaw SDK projektu był ustawiony na Go SDK.
U mnie zadziałało ustawienie tego domyślnego zestawu SDK na Java JDK.
źródło
Dla mnie wybrałem JDK w „Otwórz ustawienia modułu”> Moduł> Zależności> Moduł SDK. Jednak SBT szukało JDK na poziomie projektu, który jest ustawiony w „Otwórz ustawienia modułu”> Projekt> Projekt SDK, jak @michasm wskazał powyżej
źródło
Te ostatnie nightly wtyczki zmiany Scala w jaki sposób projekt JDK jest ustawiony, co powinno rozwiązać ten problem w większości przypadków. Daj mi znać, jeśli w niektórych przypadkach nadal się psuje.
źródło
Zdarzyło mi się to w projekcie wielojęzycznym, gdy SDK projektu mojego modułu podstawowego to Python i próbowałem dodać dodatkowy moduł, którym był JDK (importowanie projektu sbt).
Musiałem tymczasowo zmienić pakiet Project SDK modułu podstawowego na JDK, aby dodać moduł sbt. Wtedy mogłem wrócić i zmienić każdy moduł na właściwy zestaw SDK.
źródło