[intellij-idea] “오류 : 선택한 JDK에서 Java VM 실행 파일을 확인할 수 없습니다”의 이유는 무엇입니까?

IntelliJ IDEA 13.1.4를 사용하고 있으며 최신 릴리스 14도 사용해 보았습니다.

SBT를 실행하면 다음 오류가 발생합니다.

Error:Cannot determine Java VM executable in selected JDK

내 컴퓨터와 PATH에 JDK 1.7이 설치되어 있습니다.

로그 ( ~/Library/Logs/IntelliJIdea14/idea.logMacOS의 경우)에는 다음과 같은 스택 추적이 있습니다.

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)

그 이유는 무엇일까요?



답변

프로젝트 열기 / 가져 오기 대화 상자가 아닌 설정에서 jdk를 설정하여 문제를 해결할 수 있어야합니다.

시작 화면 Configure -> Project defaults -> Project structure에서 jdk 로 이동하여 추가하십시오.

여기에 이미지 설명 입력

sbt 프로젝트를 열면 잘 작동합니다.

여기에서 해결책을 찾았습니다.


답변

JDK를 설정하는 또 다른 방법은 현재 모듈 / 프로젝트 설정 (현재 프로젝트의 경우)입니다.

선택 Open Module Settings(또는 기본 F4 히트) 프로젝트의 컨텍스트 메뉴에서
다음 왼쪽 탭을 선택 Project하고 포인트 올바른 Project SDK드롭 다운에.

여기에 이미지 설명 입력


답변

이 문제는 일반적으로 “.idea / sbt.xml”의 잘못된 JDK 버전으로 인해 발생합니다. 예 :

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

이 옵션은 프로젝트 SDK가 변경 될 때 그에 따라 업데이트되지 않습니다 . SCL-10085를 참조하십시오 . 다른 JDK (예 : 1.7)가 일반적으로 구성되어있는 경우 오류가 발생하지 않지만 프로젝트 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>.

이는 .NET에서 프로젝트 SDK를 설정하는 것 외에 추가되었습니다 Project Structure -> Project.

여기 에서 스크린 샷을 참조 하십시오 .


답변

IntelliJ 13.1.6> 파일> 프로젝트 구조> 프로젝트 SDK 설정


답변

프로젝트 설정에서 Java1.6 및 Java1.7을 삭제 한 후에도 동일한 문제가 발생했습니다 (기본적으로 Java8 사용).

마지막으로 SBT JVM 구성을 Custom Java (Settings-> Build, Execution, Deployment-> Build Tools-> SBT)로 변경하여 문제를 해결했습니다.