"Hata: Seçilen JDK'da çalıştırılabilir Java VM belirlenemiyor" un nedeni nedir?


110

IntelliJ IDEA 13.1.4 kullanıyorum ve ayrıca son sürüm 14'ü denedim.

SBT'yi çalıştırırken aşağıdaki hatayı alıyorum:

Error:Cannot determine Java VM executable in selected JDK

Makinemde ve PATH üzerinde JDK 1.7 kurulu.

Günlüklerde ( ~/Library/Logs/IntelliJIdea14/idea.logMacOS'ta) aşağıdaki yığın izleme vardır:

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)

Bunun nedeni ne olabilir?


Project SDKTanımlanan proje için muhtemelen JRE'ye sahip olmanız muhtemeldir . Söz konusu proje için Proje Ayarlarını kontrol edip Proje altındaki ayarları görebilir misiniz?
Jacek Laskowski

Bu yanıtta açıklandığı gibi Önbellekleri Geçersiz Kılmam gerektiğini buldum .
rob mayoff

Yanıtlar:


204

Jdk'yi proje aç / içe aktar iletişim kutusundan değil ayarlardan ayarlayarak bu sorunu çözebilmelisiniz.

Karşılama ekranından Configure -> Project defaults -> Project structurejdk'ye gidin ve ekleyin.

görüntü açıklamasını buraya girin

Sbt projesini açmak o zaman iyi çalışacaktır.

Buradan çözüm bulundu


25

JDK'yı ayarlamanın başka bir yolu da mevcut modül / proje ayarlarınızdan (mevcut projeniz için)

Seçim Open Module Settings, (veya varsayılan F4 vurmak) projesi bağlam menüsünden
ardından sol sekmesinden seçmek Projectve nokta doğru Project SDKaçılır üzerinde.

görüntü açıklamasını buraya girin


20

Sorun genellikle ".idea / sbt.xml" dosyasındaki yanlış bir JDK sürümünden kaynaklanır, örneğin:

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

Bu seçenek, Proje SDK'sı değiştirildiğinde uygun şekilde güncellenmez, bkz. SCL-10085 . Genel olarak yapılandırılmış diğer JDK'ya sahipseniz (benim örneğimde 1.7), hata oluşmaz, ancak Proje SDK'sı sessizce değiştirilir. Aksi takdirde bu hata oluşur.

Sorun, ".idea / sbt.xml" içindeki değerin doğru JDK sürümüne manuel olarak düzenlenmesiyle kolayca çözülebilir.


7

Aynı hata, "SBT görevlerinde" yenileme yapmaya çalıştığınızda da oluşur.

Açık

Preferences -> Language & Frameworks -> Scala Compiler Server

Run compile server (in external build mode)

Projeyi yenilemeyi bitirdikten sonra, düzenleyicide kodunuzu değiştirdiğinizde hotswapping geri almayı etkinleştirmek için projeyi tekrar kapatın.


4

Açmak zorundaydım Settings -> Language & Frameworks -> Scala Compiler Server

Ardından, JVM SDK'yı oraya ayarlayın <No SDK>.

Bu, Proje SDK'sını ayarlamaya ek olarak yapıldı Project Structure -> Project.

Buradaki ekran görüntüsüne bakın .


1

IntelliJ 13.1.6> Dosya> Proje Yapısı> Proje SDK'sını ayarla


1

Java1.6 ve Java1.7'yi Proje Ayarlarından sildikten sonra da aynı sorunu yaşadım (varsayılan olarak Java8 ile).

Son olarak SBT JVM yapılandırmasını Özel Java (Ayarlar -> Oluşturma, Yürütme, Dağıtım -> Oluşturma Araçları -> SBT) olarak değiştirerek sorunu çözüyorum.


1

Benim için yukarıdaki öneriler bazı nedenlerden dolayı yardımcı olmadı. Ancak, Project Defaults> Project Structure (Karşılama ekranı) altında varsayılan Project SDK'mın Go SDK olarak ayarlandığını anladım .

Benim için işe yarayan şey, bu varsayılan SDK'yı Java JDK'ya ayarlamaktı.


0

Benim için, "Modül Ayarlarını Aç"> Modül> Bağımlılıklar> Modül SDK'sında JDK'yı seçtim. Ancak SBT, @michasm'ın yukarıda belirttiği gibi "Modül Ayarlarını Aç"> Proje> Proje SDK'sında ayarlanan proje düzeyinde JDK arıyordu


0

Son nightly'leri çoğu durumda bu çözecektir proje JDK ayarlanır nasıl Scala eklentisi değişim ait. Hala bazı durumlarda kırılıp kırılmadığını bana bildirin.


0

Bu, çok dilli bir projede, birincil modülümün Proje SDK'sı Python olduğunda ve JDK olan ikincil bir modül eklemeye çalışırken (bir sbt projesini içe aktarırken) başıma geldi.

SBT modülünü eklemek için birincil modülün Proje SDK'sını geçici olarak JDK'ya geçirmem gerekti. Daha sonra geri dönüp her modülü doğru SDK ile değiştirme olanağına sahip oldum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.