สาเหตุของ“ ข้อผิดพลาด: ไม่สามารถระบุ 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สำหรับโครงการที่กำหนดไว้ คุณสามารถตรวจสอบการตั้งค่าโครงการสำหรับโครงการที่เป็นปัญหาและดูการตั้งค่าในโครงการได้หรือไม่
Jacek Laskowski

ฉันพบว่าฉันจำเป็นต้องทำให้แคชไม่ถูกต้องตามที่อธิบายไว้ในคำตอบนี้
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" />

ตัวเลือกนี้จะไม่ปรับปรุงตามความเหมาะสมเมื่อโครงการ 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)

เมื่อคุณรีเฟรชโครงการเสร็จแล้วให้ปิดอีกครั้งเพื่อเปิดใช้ hotswapping กลับเมื่อคุณเปลี่ยนรหัสในตัวแก้ไข


4

ฉันต้องเปิด Settings -> Language & Frameworks -> Scala Compiler Server

จากนั้นตั้งค่า JVM SDK <No SDK>ที่นั่นซึ่งเป็น

นี่คือนอกเหนือจากการตั้งค่า Project SDK ในProject Structure -> Project.

ดูภาพหน้าจอที่นี่



1

ฉันพบปัญหาเดียวกันหลังจากที่ฉันลบ Java1.6 และ Java1.7 จาก Project Settings (โดยมี Java8 เป็นค่าเริ่มต้น)

ในที่สุดฉันก็แก้ปัญหาโดยเปลี่ยน SBT JVM config เป็น Custom Java (Settings -> Build, Execution, Deployment -> Build Tools -> SBT)


1

สำหรับฉันคำแนะนำข้างต้นไม่ได้ช่วยด้วยเหตุผลบางประการ อย่างไรก็ตามฉันพบว่าภายใต้ค่าเริ่มต้นของโครงการ> โครงสร้างโครงการ (หน้าจอต้อนรับ) SDK โครงการเริ่มต้นของฉันถูกตั้งค่าเป็น Go SDK

สิ่งที่ใช้ได้ผลสำหรับฉันคือการตั้งค่า SDK เริ่มต้นนี้เป็น Java JDK


0

สำหรับฉันฉันได้เลือก JDK ใน "Open Module Settings"> Module> Dependencies> Module SDK อย่างไรก็ตาม SBT กำลังมองหา JDK ที่ระดับโปรเจ็กต์ซึ่งตั้งค่าไว้ใน "Open Module Settings"> Project> Project SDK ตามที่ @michasm ได้ระบุไว้ข้างต้น


0

nightlies ล่าสุดของปลั๊กอินเปลี่ยนแปลงวิธี Scala โครงการ JDK มีการตั้งค่าที่ควรแก้ปัญหานี้ในกรณีส่วนใหญ่ โปรดแจ้งให้เราทราบหากยังมีปัญหาในบางกรณี


0

สิ่งนี้เกิดขึ้นกับฉันในโปรเจ็กต์หลายภาษาเมื่อ Project SDK ของโมดูลหลักของฉันคือ Python และฉันพยายามเพิ่มโมดูลรองที่เป็น JDK (การนำเข้าโปรเจ็กต์ sbt)

ฉันต้องเปลี่ยน Project SDK ของโมดูลหลักเป็น JDK ชั่วคราวเพื่อเพิ่มโมดูล sbt จากนั้นฉันก็สามารถย้อนกลับและเปลี่ยนแต่ละโมดูลเป็น SDK ที่ถูกต้องได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.