В чем причина "Ошибка: невозможно определить исполняемый файл Java VM в выбранном JDK"?
Я использую IntelliJ IDEA 13.1.4, а также попробовал последнюю версию 14.
Запустив SBT, я получаю следующую ошибку:
Error:Cannot determine Java VM executable in selected JDK
У меня установлен JDK 1.7 на моей машине и в PATH.
В логах (~/Library/Logs/IntelliJIdea14/idea.log
в MacOS) есть следующая трассировка стека:
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)
В чем может быть причина этого?
11 ответов
Вы должны быть в состоянии обойти это, установив JDK из настроек, а не из диалога открытия / импорта проекта.
На экране приветствия перейдите к Configure -> Project defaults -> Project structure
и добавить JDK.
Открытие проекта sbt должно работать хорошо.
Другой способ установить JDK - это из ваших текущих настроек модуля / проекта (для вашего текущего проекта)
ВыбиратьOpen Module Settings
из контекстного меню проекта (или по умолчанию нажмите F4),
затем из левой вкладки выберите Project
и указать правильно Project SDK
на выпадающем
Обычно проблема вызвана неправильной версией JDK в.idea/sbt.xml, например:
<option name="jdk" value="1.7" />
Эта опция не обновляется соответствующим образом при изменении Project SDK, см. SCL-10085. Если у вас настроен другой JDK (в моем примере - 1.7), ошибки не возникнет, но Project SDK будет автоматически изменен обратно. В противном случае эта ошибка возникает.
Проблема может быть легко решена путем ручного редактирования значения в ".idea/sbt.xml" в нужной версии JDK.
Та же самая ошибка также происходит, когда вы пытаетесь сделать обновление в "задачах SBT".
открыто
Preferences -> Language & Frameworks -> Scala Compiler Server
Включи
Run compile server (in external build mode)
Как только вы закончите с обновлением проекта, выключите его снова, чтобы включить горячую замену при изменении кода в редакторе.
Мне пришлось открыть Settings -> Language & Frameworks -> Scala Compiler Server
Затем установите JVM SDK там, который был <No SDK>
,
Это было в дополнение к настройке Project SDK в Project Structure -> Project
,
Смотрите скриншот здесь.
IntelliJ 13.1.6 > Файл> Структура проекта> Установить Project SDK
Для меня вышеупомянутые предложения почему-то не помогли. Тем не менее, я понял, что в разделе " Настройки проекта по умолчанию"> "Структура проекта" (экран приветствия) мой SDK по умолчанию для Project был установлен на Go SDK.
То, что работало для меня, устанавливало этот SDK по умолчанию на Java JDK.
У меня возникла та же проблема после удаления Java1.6 и Java1.7 из настроек проекта (с Java8 по умолчанию).
Наконец, я решил проблему, изменив конфигурацию JVM SBT на Custom Java(Настройки -> Сборка, Выполнение, Развертывание -> Инструменты сборки -> SBT).
Для меня я выбрал JDK в "Открыть настройки модуля" > Модуль> Зависимости> Модуль SDK. Однако SBT искал JDK на уровне проекта, который установлен в "Настройки открытого модуля" > "Проект" > "Project SDK", как указано выше в @michasm.
Это случилось со мной в многоязычном проекте, когда Project SDK моего основного модуля был Python, и я пытался добавить дополнительный модуль JDK (импорт проекта sbt).
Мне пришлось временно переключить Project SDK основного модуля на JDK, чтобы добавить модуль sbt. Затем у меня была возможность вернуться и изменить каждый модуль на правильный SDK.
Последние плагины Nightlies для Scala изменяют настройку JDK проекта, что должно решить эту проблему в большинстве случаев. Дайте мне знать, если это все еще ломается в некоторых случаях.