¿Cuál es el motivo del "Error: no se puede determinar el ejecutable de Java VM en el JDK seleccionado"?

110

Estoy usando IntelliJ IDEA 13.1.4 y también probé la última versión 14.

Al ejecutar SBT, aparece el siguiente error:

Error:Cannot determine Java VM executable in selected JDK

Tengo JDK 1.7 instalado en mi máquina y en PATH.

En los registros ( ~/Library/Logs/IntelliJIdea14/idea.logen MacOS) hay el siguiente seguimiento de pila:

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)

¿Cuál puede ser la razón de esto?

Zuriar
fuente
Es probable que tenga JRE Project SDKpara el proyecto definido. ¿Podría comprobar la configuración del proyecto para el proyecto en cuestión y ver la configuración en Proyecto?
Jacek Laskowski
Descubrí que necesitaba invalidar cachés como se describe en esta respuesta .
Rob Mayoff

Respuestas:

204

Debería poder solucionarlo configurando el jdk desde la configuración, no desde el cuadro de diálogo abrir / importar proyecto.

Desde la pantalla de bienvenida, vaya a Configure -> Project defaults -> Project structurey agregue el archivo jdk.

ingrese la descripción de la imagen aquí

Abrir el proyecto sbt debería funcionar bien entonces.

Solución encontrada desde aquí

Prabu
fuente
25

Otra forma de configurar JDK es desde la configuración actual del módulo / proyecto (para su proyecto actual)

Elija Open Module Settingsdel menú contextual del proyecto (o presione F4 por defecto),
luego , desde la pestaña izquierda, seleccione Projecty apunte correctamente Project SDKen el menú desplegable.

ingrese la descripción de la imagen aquí

michalczukm
fuente
20

El problema suele deberse a una versión incorrecta de JDK en ".idea / sbt.xml", por ejemplo:

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

Esta opción no se actualiza en consecuencia cuando se cambia el SDK del proyecto, consulte SCL-10085 . Si tiene el otro JDK (1.7 en mi ejemplo) configurado generalmente, no se producirá ningún error, pero el SDK del proyecto se volverá a cambiar silenciosamente. De lo contrario, se produce este error.

El problema se puede resolver fácilmente editando manualmente el valor en ".idea / sbt.xml" a la versión correcta de JDK.

F30
fuente
7

El mismo error también ocurre cuando intenta actualizar en "Tareas SBT".

Abierto

Preferences -> Language & Frameworks -> Scala Compiler Server

Encender

Run compile server (in external build mode)

Una vez que haya terminado de actualizar el proyecto, apáguelo nuevamente para habilitar el hotswapping cuando cambie su código en el editor.

Onur Aktaş
fuente
4

Tuve que abrir Settings -> Language & Frameworks -> Scala Compiler Server

Luego, configure el SDK de JVM allí, que era <No SDK>.

Esto fue además de configurar el SDK del proyecto en Project Structure -> Project.

Vea la captura de pantalla aquí .

Michael Prentice
fuente
1

IntelliJ 13.1.6> Archivo> Estructura del proyecto> establecer SDK del proyecto

soheildb
fuente
1

Tuve el mismo problema después de eliminar Java1.6 y Java1.7 de la configuración del proyecto (con Java8 por defecto).

Finalmente, resuelvo el problema cambiando la configuración de SBT JVM a Java personalizado (Configuración -> Compilación, ejecución, implementación -> Herramientas de compilación -> SBT).

Wu Zhonglin
fuente
1

Para mí, las sugerencias anteriores no ayudaron por alguna razón. Sin embargo, descubrí que en Valores predeterminados del proyecto> Estructura del proyecto (pantalla de bienvenida), mi SDK del proyecto predeterminado estaba configurado en el SDK de Go.

Lo que funcionó para mí fue configurar este SDK predeterminado para Java JDK.

edin0x
fuente
0

Para mí, había seleccionado el JDK en "Configuración del módulo abierto"> Módulo> Dependencias> SDK del módulo. Sin embargo, SBT estaba buscando JDK a nivel de proyecto, que se establece en "Configuración del módulo abierto"> Proyecto> SDK del proyecto, como @michasm ha señalado anteriormente.

Shiva
fuente
0

El último complemento Nightlies of the Scala cambia la forma en que se configura el proyecto JDK, lo que debería resolver esto en la mayoría de los casos. Avíseme si todavía se rompe en algunos casos.

Justin Kaeser
fuente
0

Esto me sucedió en un proyecto en varios idiomas cuando el SDK del proyecto de mi módulo principal era Python y estaba tratando de agregar un módulo secundario que era JDK (importando un proyecto sbt).

Tuve que cambiar temporalmente el Project SDK del módulo principal a JDK para agregar el módulo sbt. Luego tuve la capacidad de volver atrás y cambiar cada módulo al SDK correcto.

Bryan Johnson
fuente