J’utilise IntelliJ IDEA 13.1.4 et j’ai également essayé la dernière version 14.
En cours d’exécution SBT je reçois 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
sous MacOS), il existe la trace de stack 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?
Vous devriez pouvoir le contourner en définissant le jdk à partir des parameters qui ne figurent pas dans la boîte de dialog du projet d’ouverture / importation.
Dans l’écran de bienvenue, allez dans Configure -> Project defaults -> Project structure
et ajoutez le jdk.
L’ouverture du projet sbt devrait alors bien fonctionner.
Solution trouvée d’ici
Une autre façon de définir JDK est d’utiliser les parameters de votre module / projet actuel (pour votre projet actuel).
Sélectionnez Open Module Settings
du Open Module Settings
dans le menu contextuel du projet (ou appuyez sur F4 par défaut),
Ensuite, dans l’onglet de gauche, sélectionnez Project
et pointez le Project SDK
de Project SDK
logiciel ( Project SDK
sur la liste déroulante.
Le problème est généralement dû à une mauvaise version du JDK dans “.idea / sbt.xml”, par exemple:
Cette option n’est pas mise à jour en conséquence lorsque le SDK de projet est modifié, voir SCL-10085 . Si vous avez l’autre JDK (1.7 dans mon exemple) généralement configuré, aucune erreur ne se produira, mais le SDK de projet sera silencieusement rétabli. Sinon, cette erreur se produit.
Le problème peut facilement être résolu en modifiant manuellement la valeur dans “.idea / sbt.xml” à la bonne version 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 Comstackr Server
Allumer
Run comstack server (in external build mode)
Une fois que vous avez terminé d’actualiser le projet, désactivez-le à nouveau pour activer le remplacement à chaud lorsque vous modifiez votre code dans l’éditeur.
Je devais ouvrir Settings -> Language & Frameworks -> Scala Comstackr Server
Ensuite, définissez le SDK JVM qui était
.
Cela s’ajoutait à la définition du SDK de Project Structure -> Project
dans Project Structure -> Project
.
Voir la capture d’écran ici .
IntelliJ 13.1.6> Fichier> Structure du projet> définir le SDK du projet
J’ai eu le même problème après avoir supprimé Java1.6 et Java1.7 de Project Settings (avec Java8 par défaut).
Enfin, je résous le problème en modifiant la configuration de JVM SBT en Java personnalisé (Paramètres -> Créer, Exécuter, Déployer -> Outils de génération -> SBT).
Pour moi, les suggestions ci-dessus n’ont pas aidé pour une raison quelconque. Cependant, j’ai compris que sous Défauts du projet> Structure du projet (écran de bienvenue), mon SDK de projet par défaut était défini sur le SDK Go.
Ce qui a fonctionné pour moi était de définir ce SDK par défaut sur le JDK Java.
Pour moi, j’avais choisi le JDK dans “Paramètres du module ouvert”> Module> Dépendances> Kit SDK. Toutefois, SBT recherchait JDK au niveau du projet, défini dans “Paramètres du module ouvert”> Projet> Kit de développement logiciel (SDK) du projet, comme indiqué par @michasm ci-dessus.
Les dernières Nightlies du plug-in Scala modifient la configuration du projet JDK, ce qui devrait résoudre ce problème dans la plupart des cas. Faites-moi savoir si ça casse encore dans certains cas.