В чем причина появления «Ошибка: не удается определить исполняемый файл Java VM в выбранном JDK»?


110

Я использую 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)

В чем может быть причина этого?


Вероятно, у вас есть JRE Project SDKдля определенного проекта. Не могли бы вы проверить настройки проекта для рассматриваемого проекта и просмотреть настройки в разделе «Проект»?
Яцек Ласковски

Я обнаружил, что мне нужно сделать недействительными кеши, как описано в этом ответе .
rob mayoff

Ответы:


204

Вы должны иметь возможность обойти это, установив jdk из настроек, а не из диалогового окна открытия / импорта проекта.

На экране приветствия перейдите Configure -> Project defaults -> Project structureи добавьте файл jdk.

введите описание изображения здесь

Тогда открытие проекта sbt должно сработать.

Нашел решение отсюда


25

Другой способ установить JDK - из настроек вашего текущего модуля / проекта (для вашего текущего проекта)

Выберите Open Module Settingsиз контекстного меню проекта (или нажмите F4 по умолчанию),
затем на левой вкладке выберите Projectи укажите правильный Project SDKвариант в раскрывающемся списке.

введите описание изображения здесь


20

Обычно проблема возникает из-за неправильной версии JDK в ".idea / sbt.xml", например:

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

Этот параметр не обновляется соответствующим образом при изменении Project SDK, см. SCL-10085 . Если у вас обычно настроен другой JDK (1.7 в моем примере), ошибки не произойдет, но Project SDK будет автоматически изменен обратно. В противном случае возникает эта ошибка.

Проблему легко решить, вручную отредактировав значение в ".idea / sbt.xml" до нужной версии JDK.


7

Такая же ошибка возникает при попытке выполнить обновление в «Задачах SBT».

открыто

Preferences -> Language & Frameworks -> Scala Compiler Server

Включи

Run compile server (in external build mode)

После завершения обновления проекта выключите его снова, чтобы включить обратную замену при изменении кода в редакторе.


4

Мне пришлось открыть Settings -> Language & Frameworks -> Scala Compiler Server

Затем установите JVM SDK там, который был <No SDK>.

Это было в дополнение к установке Project SDK в Project Structure -> Project.

Смотрите скриншот здесь .



1

У меня возникла такая же проблема после удаления Java1.6 и Java1.7 из настроек проекта (с Java8 по умолчанию).

Наконец, я решил проблему, изменив конфигурацию SBT JVM на Custom Java (Настройки -> Сборка, Выполнение, Развертывание -> Инструменты сборки -> SBT).


1

Мне по какой-то причине вышеперечисленные предложения не помогли. Тем не менее, я выяснил, что в разделе Project Defaults> Project Structure (Welcome screen) мой SDK проекта по умолчанию был установлен на Go SDK.

Что сработало для меня, так это установка этого SDK по умолчанию на Java JDK.


0

Для меня я выбрал JDK в «Открыть настройки модуля»> «Модуль»> «Зависимости»> «SDK модуля». Однако SBT искал JDK на уровне проекта, который установлен в «Настройки открытого модуля»> Проект> SDK проекта, как указано выше в @michasm.


0

В последние Nightlies плагина изменения Scala , как проект JDK установлен, который должен решить эту проблему в большинстве случаев. Сообщите мне, если в некоторых случаях он все еще ломается.


0

Это случилось со мной в многоязычном проекте, когда моим основным модулем Project SDK был Python, а я пытался добавить дополнительный модуль JDK (импорт проекта sbt).

Мне пришлось временно переключить Project SDK основного модуля на JDK, чтобы добавить модуль sbt. Затем у меня была возможность вернуться и изменить каждый модуль на правильный SDK.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.