Qual è il motivo di "Errore: impossibile determinare l'eseguibile di Java VM nel JDK selezionato"?


110

Sto usando IntelliJ IDEA 13.1.4 e ho provato anche l'ultima versione 14.

Eseguendo SBT ottengo il seguente errore:

Error:Cannot determine Java VM executable in selected JDK

Ho JDK 1.7 installato sulla mia macchina e su PATH.

Nei log ( ~/Library/Logs/IntelliJIdea14/idea.logsu MacOS) c'è la seguente traccia dello stack:

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)

Quale può essere la ragione di ciò?


È probabile che tu abbia JRE Project SDKper il progetto definito. Potresti controllare le impostazioni del progetto per il progetto in questione e vedere le impostazioni in Progetto?
Jacek Laskowski

Ho scoperto che avevo bisogno di invalidare le cache come descritto in questa risposta .
rob mayoff

Risposte:


204

Dovresti essere in grado di aggirare il problema impostando jdk dalle impostazioni e non dalla finestra di dialogo Apri / Importa progetto.

Dalla schermata di benvenuto, vai a Configure -> Project defaults -> Project structuree aggiungi jdk.

inserisci qui la descrizione dell'immagine

L'apertura del progetto sbt dovrebbe funzionare bene allora.

Soluzione trovata da qui


25

Un altro modo per impostare JDK è dalle impostazioni del modulo / progetto corrente (per il progetto corrente)

Scegli Open Module Settingsdal menu contestuale del progetto (o premi F4 predefinito),
quindi dalla scheda sinistra seleziona Projecte punta Project SDKil cursore a discesa.

inserisci qui la descrizione dell'immagine


20

Il problema è solitamente causato da una versione errata di JDK in ".idea / sbt.xml", ad esempio:

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

Questa opzione non viene aggiornata di conseguenza quando il Project SDK viene modificato, vedere SCL-10085 . Se si dispone dell'altro JDK (1.7 nel mio esempio) generalmente configurato, non si verificherà alcun errore, ma Project SDK verrà automaticamente modificato di nuovo. In caso contrario, si verifica questo errore.

Il problema può essere facilmente risolto modificando manualmente il valore in ".idea / sbt.xml" nella versione JDK corretta.


7

Lo stesso errore si verifica anche quando si tenta di eseguire un aggiornamento in "Attività SBT".

Aperto

Preferences -> Language & Frameworks -> Scala Compiler Server

Accendere

Run compile server (in external build mode)

Una volta terminato l'aggiornamento del progetto, spegnilo di nuovo per abilitare nuovamente l'hotswapping quando modifichi il codice nell'editor.


4

Ho dovuto aprire Settings -> Language & Frameworks -> Scala Compiler Server

Quindi imposta l'SDK JVM lì, che era <No SDK>.

Questo era in aggiunta all'impostazione di Project SDK in Project Structure -> Project.

Guarda lo screenshot qui .


1

IntelliJ 13.1.6> File> Struttura progetto> imposta Project SDK


1

Ho avuto lo stesso problema dopo aver eliminato Java1.6 e Java1.7 da Impostazioni progetto (con Java8 come impostazione predefinita).

Infine risolvo il problema modificando la configurazione JVM di SBT in Java personalizzato (Impostazioni -> Build, Execution, Deployment -> Build Tools -> SBT).


1

Per me i suggerimenti di cui sopra non hanno aiutato per qualche motivo. Tuttavia, ho scoperto che in Impostazioni predefinite del progetto> Struttura del progetto (schermata di benvenuto) il mio SDK di progetto predefinito era impostato su Go SDK.

Quello che ha funzionato per me è stato impostare questo SDK predefinito su Java JDK.


0

Per me, avevo selezionato il JDK in "Apri impostazioni modulo"> Modulo> Dipendenze> Modulo SDK. Tuttavia, SBT stava cercando JDK a livello di progetto che è impostato in "Apri impostazioni modulo"> Progetto> Project SDK come @michasm ha sottolineato sopra


0

Gli ultimi Nightlies del plugin Scala cambiano il modo in cui è impostato il JDK del progetto, che dovrebbe risolvere questo problema nella maggior parte dei casi. Fammi sapere se si rompe ancora in alcuni casi.


0

Questo mi è successo in un progetto multilingue quando il Project SDK del mio modulo principale era Python e stavo cercando di aggiungere un modulo secondario che fosse JDK (importando un progetto sbt).

Ho dovuto cambiare temporaneamente il Project SDK del modulo principale su JDK per aggiungere il modulo sbt. Ho quindi avuto la possibilità di tornare indietro e modificare ogni modulo con l'SDK corretto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.