Quelle est la raison de "Erreur: impossible de déterminer l'exécutable Java VM dans le JDK sélectionné"?

110

J'utilise IntelliJ IDEA 13.1.4 et j'ai également essayé la dernière version 14.

En cours d'exécution SBT, j'obtiens l'erreur suivante:

Error:Cannot determine Java VM executable in selected JDK

J'ai JDK 1.7 installé sur ma machine et sur PATH.

Dans les journaux ( ~/Library/Logs/IntelliJIdea14/idea.logsur MacOS), il y a la trace de pile suivante:

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)

Quelle peut en être la raison?

Zuriar
la source
Il est probable que vous ayez JRE Project SDKpour le projet défini. Pourriez-vous vérifier les paramètres du projet pour le projet en question et voir les paramètres sous Projet?
Jacek Laskowski
J'ai trouvé que je devais invalider les caches comme décrit dans cette réponse .
rob mayoff

Réponses:

204

Vous devriez être en mesure de le contourner en définissant le jdk à partir des paramètres et non de la boîte de dialogue Ouvrir / importer le projet.

Depuis l'écran de bienvenue, accédez à Configure -> Project defaults -> Project structureet ajoutez le fichier jdk.

entrez la description de l'image ici

L'ouverture du projet sbt devrait alors bien fonctionner.

Solution trouvée d'ici

Prabu
la source
25

Une autre façon de définir JDK consiste à utiliser les paramètres actuels de votre module / projet (pour votre projet actuel)

Choisissez Open Module Settingsdans le menu contextuel du projet (ou appuyez sur F4 par défaut),
puis dans l'onglet de gauche, sélectionnez Projectet pointez correctement Project SDKsur la liste déroulante.

entrez la description de l'image ici

michalczukm
la source
20

Le problème est généralement causé par une mauvaise version de JDK dans ".idea / sbt.xml", par exemple:

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

Cette option n'est pas mise à jour en conséquence lorsque le SDK du projet est modifié, voir SCL-10085 . Si vous avez généralement configuré l'autre JDK (1.7 dans mon exemple), aucune erreur ne se produira, mais le SDK du projet sera rétabli en silence. Sinon, cette erreur se produit.

Le problème peut être facilement résolu en modifiant manuellement la valeur dans ".idea / sbt.xml" dans la bonne version de JDK.

F30
la source
7

La même erreur se produit également lorsque vous essayez d'effectuer une actualisation dans «Tâches SBT».

Ouvert

Preferences -> Language & Frameworks -> Scala Compiler Server

Allumer

Run compile server (in external build mode)

Une fois que vous avez terminé d'actualiser le projet, désactivez-le à nouveau pour réactiver l'échange à chaud lorsque vous modifiez votre code dans l'éditeur.

Onur Aktaş
la source
4

Je devais ouvrir Settings -> Language & Frameworks -> Scala Compiler Server

Ensuite, définissez le SDK JVM là-bas, qui était <No SDK>.

Cela s'ajoutait à la configuration du SDK de projet dans Project Structure -> Project.

Voir la capture d'écran ici .

Michael Prentice
la source
1

IntelliJ 13.1.6> Fichier> Structure du projet> définir le SDK du projet

soheildb
la source
1

J'ai eu le même problème après avoir supprimé Java1.6 et Java1.7 des paramètres du projet (avec Java8 par défaut).

Enfin, je résous le problème en changeant la configuration de SBT JVM en Java personnalisé (Paramètres -> Build, Execution, Deployment -> Build Tools -> SBT).

Wu Zhonglin
la source
1

Pour moi, les suggestions ci-dessus n'ont pas aidé pour une raison quelconque. Cependant, j'ai compris que sous Paramètres par défaut du projet> Structure du projet (écran de bienvenue), mon SDK de projet par défaut était défini sur Go SDK.

Ce qui a fonctionné pour moi a été de définir ce SDK par défaut sur le JDK Java.

edin0x
la source
0

Pour moi, j'avais sélectionné le JDK dans "Open Module Settings"> Module> Dependencies> Module SDK. Cependant, SBT recherchait JDK au niveau du projet, qui est défini dans "Ouvrir les paramètres du module"> Projet> Projet SDK comme @michasm l'a souligné ci-dessus

Shiva
la source
0

Les derniers Nightlies du plugin Scala changent la façon dont le projet JDK est défini, ce qui devrait résoudre ce problème dans la plupart des cas. Faites-moi savoir si ça casse encore dans certains cas.

Justin Kaeser
la source
0

Cela m'est arrivé dans un projet multilingue lorsque le SDK de projet de mon module principal était Python et que j'essayais d'ajouter un module secondaire qui était JDK (importation d'un projet sbt).

J'ai dû temporairement basculer le SDK de projet du module principal vers JDK afin d'ajouter le module sbt. J'ai ensuite eu la possibilité de revenir en arrière et de changer chaque module vers le bon SDK.

Bryan Johnson
la source