Qual é o motivo do “Erro: não é possível determinar o executável Java VM no JDK selecionado”?

110

Estou usando o IntelliJ IDEA 13.1.4 e também experimentei a versão 14 mais recente.

Ao executar o SBT, recebo o seguinte erro:

Error:Cannot determine Java VM executable in selected JDK

Tenho o JDK 1.7 instalado em minha máquina e no PATH.

Nos logs ( ~/Library/Logs/IntelliJIdea14/idea.logno MacOS) há o seguinte rastreamento de pilha:

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)

Qual pode ser a razão disso?

Zuriar
fonte
É provável que você tenha o JRE Project SDKpara o projeto definido. Você poderia verificar as configurações do projeto para o projeto em questão e ver as configurações em Projeto?
Jacek Laskowski
Descobri que precisava invalidar caches conforme descrito nesta resposta .
rob mayoff de

Respostas:

204

Você deve ser capaz de contornar isso configurando o jdk nas configurações, não na caixa de diálogo abrir / importar projeto.

Na tela de boas-vindas, acesse Configure -> Project defaults -> Project structuree adicione o jdk.

insira a descrição da imagem aqui

Abrir o projeto sbt deve funcionar bem então.

Solução encontrada aqui

Prabu
fonte
25

Outra forma de definir o JDK é a partir das configurações atuais do módulo / projeto (para o seu projeto atual)

Escolha Open Module Settingsno menu de contexto do projeto (ou pressione F4 padrão) e, a
seguir , na guia esquerda, selecione Projecte aponte para corrigir Project SDKno menu suspenso.

insira a descrição da imagem aqui

Michalczukm
fonte
20

O problema geralmente é causado por uma versão errada do JDK em ".idea / sbt.xml", por exemplo:

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

Esta opção não é atualizada adequadamente quando o SDK do projeto é alterado, consulte SCL-10085 . Se você tiver o outro JDK (1.7 no meu exemplo) geralmente configurado, nenhum erro ocorrerá, mas o SDK do projeto será alterado de volta silenciosamente. Caso contrário, esse erro ocorre.

O problema pode ser facilmente resolvido editando manualmente o valor em ".idea / sbt.xml" para a versão correta do JDK.

F30
fonte
7

O mesmo erro também ocorre quando você tenta fazer uma atualização em "tarefas SBT".

Abrir

Preferences -> Language & Frameworks -> Scala Compiler Server

Ligar

Run compile server (in external build mode)

Assim que terminar de atualizar o projeto, desligue-o novamente para habilitar o hotswapping de volta ao alterar seu código no editor.

Onur Aktaş
fonte
4

Eu tive que abrir Settings -> Language & Frameworks -> Scala Compiler Server

Em seguida, defina o JVM SDK lá, que era <No SDK>.

Isso além de configurar o SDK do projeto em Project Structure -> Project.

Veja a imagem aqui .

Michael Prentice
fonte
1

IntelliJ 13.1.6> Arquivo> Estrutura do projeto> definir SDK do projeto

Soheildb
fonte
1

Tive o mesmo problema depois de excluir Java1.6 e Java1.7 das configurações do projeto (com Java8 como padrão).

Finalmente, resolvo o problema alterando a configuração do SBT JVM para Java personalizado (Configurações -> Compilar, Execução, Implementação -> Ferramentas de Compilação -> SBT).

wu zhonglin
fonte
1

Para mim, as sugestões acima não ajudaram por algum motivo. No entanto, descobri que, em Padrões do projeto> Estrutura do projeto (tela de boas-vindas), meu SDK do projeto padrão foi definido para o SDK do Go.

O que funcionou para mim foi definir este SDK padrão para o Java JDK.

edin0x
fonte
0

Para mim, selecionei o JDK em "Abrir configurações do módulo"> Módulo> Dependências> SDK do módulo. No entanto, o SBT estava procurando por JDK no nível do projeto, que é definido em "Abrir Configurações do Módulo"> Projeto> SDK do Projeto, como @michasm apontou acima

Shiva
fonte
0

O último plugin Nightlies of the Scala muda a configuração do JDK do projeto, o que deve resolver isso na maioria dos casos. Avise-me se ainda quebrar em alguns casos.

Justin Kaeser
fonte
0

Isso aconteceu comigo em um projeto multilíngue quando o SDK do projeto do meu módulo principal era Python e eu estava tentando adicionar um módulo secundário que era JDK (importando um projeto sbt).

Tive que mudar temporariamente o SDK do projeto do módulo primário para JDK para adicionar o módulo sbt. Em seguida, tive a capacidade de voltar e alterar cada módulo para o SDK correto.

Bryan Johnson
fonte