У чому причина "Помилка: Неможливо визначити виконуваний Java VM у вибраному JDK"?


110

Я використовую IntelliJ IDEA 13.1.4, а також спробував останню версію 14.

Запуск SBT я отримую таку помилку:

Error:Cannot determine Java VM executable in selected JDK

У мене на моїй машині та на PATH встановлений JDK 1.7.

У журналах ( ~/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для визначеного проекту. Чи можете ви перевірити Налаштування проекту для відповідного проекту та побачити налаштування в розділі Проект?
Яцек Ласковський

Я виявив, що мені потрібно скасувати кеші, як описано у цій відповіді .
грабувати майофф

Відповіді:


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" />

Цей параметр не оновлюється відповідно при зміні SDK проекту, див. SCL-10085 . Якщо у вас інший JDK (у моєму прикладі 1.7) загалом налаштований, помилки не буде, але проект 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

Потім встановіть туди SDK JVM, який був <No SDK>.

Це було додатково до встановлення пакета SDK для проекту Project Structure -> Project.

Дивіться скріншот тут .


1

IntelliJ 13.1.6> Файл> Структура проекту> встановити проект SDK


1

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

Нарешті я вирішую проблему, змінивши конфігурацію SBT JVM на користувальницьку Java (Налаштування -> Збірка, Виконання, Розгортання -> Інструменти побудови -> SBT).


1

Для мене вищезгадані пропозиції чомусь не допомогли. Однак я зрозумів, що за умовчанням проекту> Структура проекту (екран вітання) мій стандартний пакет SDK для проектів було встановлено на Go SDK Go.

Для мене працювало встановлення цього SDK за замовчуванням на Java JDK.


0

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


0

В останні Nightlies плагіна зміни Scala , як проект JDK встановлений, який повинен вирішити цю проблему в більшості випадків. Повідомте мене, якщо це все-таки порушується в деяких випадках.


0

Це сталося зі мною в багатомовній проекті, коли проект SDK мого основного модуля був Python, і я намагався додати вторинний модуль, який був JDK (імпорт sbt-проекту).

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.