我正在使用IntelliJ IDEA 13.1.4并尝试了最新版本14。
运行SBT我收到以下错误:
Error:Cannot determine Java VM executable in selected JDK
我的机器和PATH上安装了JDK 1.7。
在日志(MacOS上的~/Library/Logs/IntelliJIdea14/idea.log
)中,有以下堆栈跟踪:
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)
这可能是什么原因?
答案 0 :(得分:204)
您应该能够通过设置jdk而不是打开/导入项目对话框来设置它。
在欢迎屏幕上,转到Configure -> Project defaults -> Project structure
并添加jdk。
打开sbt项目应该可以正常工作。
答案 1 :(得分:25)
设置JDK的另一种方法是从当前的模块/项目设置(对于当前项目)
从项目上下文菜单中选择Open Module Settings
(或默认点击F4),然后从左侧标签中选择Project
并在下拉列表中指出正确的Project SDK
。
答案 2 :(得分:20)
问题通常是由" .idea / sbt.xml"中错误的JDK版本引起的,例如:
<option name="jdk" value="1.7" />
更改Project SDK时,此选项不会相应更新,请参阅SCL-10085。如果您通常配置了其他JDK(在我的示例中为1.7),则不会发生错误,但Project SDK将以静默方式进行更改。否则,会发生此错误。
通过手动编辑&#34; .idea / sbt.xml&#34;中的值可以轻松解决问题。到正确的JDK版本。
答案 3 :(得分:7)
当您尝试在&#34; SBT任务&#34;中进行刷新时,也会发生同样的错误。
打开
Preferences -> Language & Frameworks -> Scala Compiler Server
开启
Run compile server (in external build mode)
完成项目刷新后,再次将其关闭以在编辑器中更改代码时启用hotswapping。
答案 4 :(得分:4)
我必须打开Settings -> Language & Frameworks -> Scala Compiler Server
然后在那里设置JVM SDK,即<No SDK>
。
这是在Project Structure -> Project
。
请参阅screenshot here。
答案 5 :(得分:1)
IntelliJ 13.1.6&gt;文件&gt;项目结构&gt;设置Project SDK
答案 6 :(得分:1)
从Project Settings(默认使用Java8)删除Java1.6和Java1.7后,我遇到了同样的问题。
最后,我通过将SBT JVM配置更改为自定义Java(设置 - &gt;构建,执行,部署 - &gt;构建工具 - &gt; SBT)来解决问题。
答案 7 :(得分:1)
对我来说,上述建议由于某种原因没有帮助。但是,我确实在 Project Defaults&gt;下找到了它。项目结构(欢迎屏幕)我的默认Project SDK已设置为Go SDK。
对我来说有用的是将此默认SDK设置为Java JDK。
答案 8 :(得分:0)
对我来说,我在“开放模块设置”&gt;中选择了JDK。模块&gt;依赖性&gt;模块SDK。 但是,SBT正在项目级别寻找JDK,该级别在“开放模块设置”&gt;中设置。项目&gt; @michasm的Project SDK已在上面指出
答案 9 :(得分:0)
Scala插件的latest Nightlies改变了项目JDK的设置方式,在大多数情况下应该解决这个问题。如果在某些情况下它仍然存在,请告诉我。
答案 10 :(得分:0)
在多语言项目中,当我的主要模块的Project SDK是Python,而我试图添加一个辅助模块,即JDK(导入sbt项目)时,发生了这种情况。
为了添加sbt模块,我不得不暂时将主模块的Project SDK切换到JDK。然后,我可以返回并将每个模块更改为正确的SDK。