Jaki jest powód „Błąd: nie można określić pliku wykonywalnego Java VM w wybranym JDK”?


110

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.logw 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?


Prawdopodobnie masz środowisko JRE Project SDKdla zdefiniowanego projektu. Czy możesz sprawdzić ustawienia projektu dla danego projektu i zobaczyć ustawienia w obszarze Projekt?
Jacek Laskowski

Okazało się, że muszę unieważnić pamięci podręczne, jak opisano w tej odpowiedzi .
rob mayoff

Odpowiedzi:


204

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 structurei dodaj plik jdk.

wprowadź opis obrazu tutaj

Otwarcie projektu sbt powinno wtedy działać dobrze.

Znalazłem rozwiązanie stąd


25

Innym sposobem ustawienia JDK jest użycie aktualnych ustawień modułu / projektu (dla obecnego projektu)

Wybierz Open Module Settingsz menu kontekstowego projektu (lub domyślnie naciśnij F4),
następnie z lewej zakładki wybierz Projecti wskaż prawidłowo Project SDKna rozwijanym menu.

wprowadź opis obrazu tutaj


20

Problem jest zwykle spowodowany nieprawidłową wersją JDK w pliku „.idea / sbt.xml”, np .:

<option name="jdk" value="1.7" />

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.


7

Ten sam błąd występuje również podczas próby odświeżenia w „zadaniach SBT”.

otwarty

Preferences -> Language & Frameworks -> Scala Compiler Server

Włączyć

Run compile server (in external build mode)

Po zakończeniu odświeżania projektu wyłącz go ponownie, aby włączyć funkcję hotswapping z powrotem po zmianie kodu w edytorze.


4

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 .



1

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).


1

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.


0

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


0

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.


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.