Was ist der Grund für "Fehler: Java VM kann im ausgewählten JDK nicht ausgeführt werden"?

110

Ich verwende IntelliJ IDEA 13.1.4 und habe auch die neueste Version 14 ausprobiert.

Beim Ausführen von SBT wird der folgende Fehler angezeigt:

Error:Cannot determine Java VM executable in selected JDK

Ich habe JDK 1.7 auf meinem Computer und auf PATH installiert.

In den Protokollen ( ~/Library/Logs/IntelliJIdea14/idea.logunter MacOS) befindet sich die folgende Stapelverfolgung:

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)

Was kann der Grund dafür sein?

Zuriar
quelle
Es ist wahrscheinlich, dass Sie JRE Project SDKfür das definierte Projekt haben. Könnten Sie die Projekteinstellungen für das betreffende Projekt überprüfen und die Einstellungen unter Projekt anzeigen?
Jacek Laskowski
Ich stellte fest, dass ich Caches wie in dieser Antwort beschrieben ungültig machen musste .
Rob Mayoff

Antworten:

204

Sie sollten in der Lage sein, dies zu umgehen, indem Sie das JDK in den Einstellungen und nicht im Dialogfeld "Projekt öffnen / importieren" festlegen.

Gehen Sie im Begrüßungsbildschirm zu Configure -> Project defaults -> Project structureund fügen Sie das JDK hinzu.

Geben Sie hier die Bildbeschreibung ein

Das Öffnen des sbt-Projekts sollte dann gut funktionieren.

Hier gefundene Lösung

Prabu
quelle
25

Eine andere Möglichkeit, JDK festzulegen, besteht in Ihren aktuellen Modul- / Projekteinstellungen (für Ihr aktuelles Projekt).

Wählen Sie Open Module Settingsaus dem Projektkontextmenü (oder drücken Sie standardmäßig F4),
wählen Sie dann auf der linken Registerkarte aus Projectund zeigen Sie Project SDKin der Dropdown-Liste richtig .

Geben Sie hier die Bildbeschreibung ein

michalczukm
quelle
20

Das Problem wird normalerweise durch eine falsche JDK-Version in ".idea / sbt.xml" verursacht, z.

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

Diese Option wird nicht entsprechend aktualisiert, wenn das Project SDK geändert wird (siehe SCL-10085) . Wenn Sie das andere JDK (in meinem Beispiel 1.7) allgemein konfiguriert haben, tritt kein Fehler auf, aber das Projekt-SDK wird stillschweigend zurückgesetzt. Andernfalls tritt dieser Fehler auf.

Das Problem kann leicht behoben werden, indem der Wert in ".idea / sbt.xml" manuell auf die richtige JDK-Version bearbeitet wird.

F30
quelle
7

Der gleiche Fehler tritt auch auf, wenn Sie versuchen, eine Aktualisierung in "SBT-Aufgaben" durchzuführen.

Öffnen

Preferences -> Language & Frameworks -> Scala Compiler Server

Anschalten

Run compile server (in external build mode)

Wenn Sie mit dem Aktualisieren des Projekts fertig sind, deaktivieren Sie es erneut, um das Zurückschalten zu aktivieren, wenn Sie Ihren Code im Editor ändern.

Onur Aktaş
quelle
4

Ich musste öffnen Settings -> Language & Frameworks -> Scala Compiler Server

Stellen Sie dann dort das JVM SDK ein <No SDK>.

Dies war zusätzlich zum Einrichten des Project SDK Project Structure -> Project.

Sehen Sie den Screenshot hier .

Michael Prentice
quelle
1

IntelliJ 13.1.6> Datei> Projektstruktur> Projekt-SDK festlegen

soheildb
quelle
1

Ich habe das gleiche Problem, nachdem ich Java1.6 und Java1.7 aus den Projekteinstellungen gelöscht habe (standardmäßig Java8).

Schließlich löse ich das Problem, indem ich die SBT JVM-Konfiguration in Benutzerdefiniertes Java ändere (Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Erstellen von Tools -> SBT).

wu zhonglin
quelle
1

Für mich haben die obigen Vorschläge aus irgendeinem Grund nicht geholfen. Ich habe jedoch herausgefunden, dass unter Projektstandards> Projektstruktur (Begrüßungsbildschirm) mein Standard-Projekt-SDK auf das Go-SDK festgelegt wurde.

Für mich hat es funktioniert, dieses Standard-SDK auf das Java-JDK zu setzen.

edin0x
quelle
0

Für mich hatte ich das JDK unter "Moduleinstellungen öffnen"> Modul> Abhängigkeiten> Modul-SDK ausgewählt. SBT suchte jedoch nach JDK auf Projektebene, das unter "Open Module Settings"> Project> Project SDK festgelegt ist, wie @michasm oben ausgeführt hat

Shiva
quelle
0

Die neuesten Nightlies des Scala-Plugins ändern die Einstellung des Projekt-JDK, was dies in den meisten Fällen lösen sollte. Lassen Sie mich wissen, ob es in einigen Fällen immer noch kaputt geht.

Justin Kaeser
quelle
0

Dies passierte mir in einem mehrsprachigen Projekt, als das Project SDK meines primären Moduls Python war und ich versuchte, ein sekundäres Modul hinzuzufügen, das JDK war (Importieren eines sbt-Projekts).

Ich musste das Project SDK des primären Moduls vorübergehend auf JDK umstellen, um das sbt-Modul hinzuzufügen. Ich hatte dann die Möglichkeit, jedes Modul auf das richtige SDK umzustellen.

Bryan Johnson
quelle