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


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.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)

그 이유는 무엇일까요?


Project SDK정의 된 프로젝트에 JRE가있을 가능성이 높습니다 . 해당 프로젝트의 프로젝트 설정을 확인하고 프로젝트에서 설정을 볼 수 있습니까?
Jacek Laskowski

이 답변에 설명 대로 캐시무효화 해야한다는 것을 알았습니다 .
rob mayoff

답변:


204

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

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

여기에 이미지 설명 입력

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

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


25

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

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

여기에 이미지 설명 입력


20

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

<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

그런 다음 JVM SDK를 설정하십시오 <No SDK>.

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

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


1

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


1

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

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


1

나에게 위의 제안은 어떤 이유로 도움이되지 않았습니다. 그러나 프로젝트 기본값> 프로젝트 구조 (시작 화면)에서 기본 프로젝트 SDK가 Go SDK로 설정되어 있음을 확인했습니다.

나를 위해 일한 것은이 기본 SDK를 Java JDK로 설정하는 것입니다.


0

저에게는 "Open Module Settings"> Module> Dependencies> Module SDK에서 JDK를 선택했습니다. 그러나 SBT는 @michasm이 위에서 지적한대로 "Open Module Settings"> Project> Project SDK에 설정된 프로젝트 수준에서 JDK를 찾고있었습니다.


0

Scala 플러그인 의 최신 Nightlies 는 프로젝트 JDK 설정 방식을 변경하여 대부분의 경우이 문제를 해결해야합니다. 일부 경우에 여전히 중단되는지 알려주십시오.


0

내 기본 모듈의 프로젝트 SDK가 Python이고 JDK (sbt 프로젝트 가져 오기) 인 보조 모듈을 추가하려고 할 때 다국어 프로젝트에서 이런 일이 발생했습니다.

sbt 모듈을 추가하려면 기본 모듈의 프로젝트 SDK를 JDK로 일시적으로 전환해야했습니다. 그런 다음 돌아가서 각 모듈을 올바른 SDK로 변경할 수있었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.