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?
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.
L’ouverture du projet sbt devrait alors bien fonctionner.
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.
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.
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.
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 .
IntelliJ 13.1.6> Fichier> Structure du projet> Définir le kit de développement de projet
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.
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).
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.
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
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.