web-dev-qa-db-fra.com

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

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

JDK 1.7 est installé sur ma machine et sur PATH.

Dans les journaux (~/Library/Logs/IntelliJIdea14/idea.log sur MacOS), il existe une trace de pile:

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?

110
Zuriar

Vous devriez pouvoir le contourner en définissant le jdk à partir des paramètres et non de la boîte de dialogue Ouvrir/Importer un projet. 

Dans l'écran d'accueil, accédez à Configure -> Project defaults -> Project structure et ajoutez le jdk.

enter image description here

L’ouverture du projet sbt devrait alors bien fonctionner.

Solution trouvée d'ici

204
Prabu

Une autre façon de configurer le JDK consiste à utiliser les paramètres actuels de votre module/projet (pour votre projet actuel).

ChoisissezOpen Module Settings dans le menu contextuel du projet (ou appuyez sur F4 par défaut), 
puis à partir de l'onglet de gauche, sélectionnez Project et pointez Project SDK correct dans la liste déroulante.

enter image description here

25
michalczukm

Le problème est généralement dû à une mauvaise version du 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 de projet est modifié, voir SCL-10085 . Si vous configurez généralement l'autre kit JDK (1.7 dans mon exemple), aucune erreur ne se produira, mais le Kit de développement logiciel (SDK) sera automatiquement rétabli. Sinon, cette erreur se produit.

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

20
F30

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

Ouvrir

Preferences -> Language & Frameworks -> Scala Compiler Server

Allumer

Run compile server (in external build mode)

Une fois que vous avez terminé l'actualisation du projet, désactivez-le de nouveau pour activer l'échange de données lorsque vous modifiez votre code dans l'éditeur.

7
Onur Aktaş

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

Puis définissez le SDK JVM à cet endroit, qui était <No SDK>.

Cela s'ajoutait à la définition du Project SDK dans Project Structure -> Project.

Voir le capture d'écran ici .

4
Michael Prentice

IntelliJ 13.1.6> Fichier> Structure du projet> Définir le kit de développement de projet

1
soheildb

Pour moi, les suggestions ci-dessus n'ont pas aidé pour une raison quelconque. Cependant, j'ai compris que sous Préférences 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, c’est de définir ce SDK par défaut sur le JDK Java.

1
edudojevic

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

Enfin, je résous le problème en modifiant la configuration de la JVM SBT en Java personnalisé (Paramètres -> Construire, Exécution, Déploiement -> Outils de construction -> SBT).

1
wu zhonglin

Les derniers Nightlies du plugin Scala modifient la configuration du JDK du projet, ce qui devrait résoudre ce problème dans la plupart des cas. Faites-moi savoir si ça casse encore dans certains cas.

0
Justin Kaeser

Pour moi, j'avais sélectionné le JDK dans "Paramètres du module ouvert"> Module> Dépendances> Module SDK . Cependant, SBT recherchait le JDK au niveau du projet défini dans "Paramètres du module ouvert"> Projet> Projet SDK en tant que @michasm a souligné ci-dessus

0
Shiva

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 au format 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 pour le SDK correct.

0
Bryan Johnson