web-dev-qa-db-ja.com

「エラー:選択したJDKでJava VM実行可能ファイルを特定できません」の理由は何ですか?

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)

この理由は何ですか?

110
Zuriar

[プロジェクトを開く/インポート]ダイアログからではなく、設定からjdkを設定することで回避できます。

ようこそ画面からConfigure -> Project defaults -> Project structureに移動し、jdkを追加します。

enter image description here

Sbtプロジェクトを開くとうまく動作するはずです。

ここから解決策が見つかりました

204
Prabu

JDKを設定するもう1つの方法は、現在のモジュール/プロジェクト設定から(現在のプロジェクト用)

プロジェクトのコンテキストメニューからPickOpen Module Settings(またはデフォルトでF4を押します)、
次に、左側のタブからProjectを選択し、ドロップダウンで正しいProject SDKをポイントします。

enter image description here

25
michalczukm

この問題は通常、「。idea/sbt.xml」のJDKバージョンが間違っているために発生します。例:

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

Project SDKが変更された場合、このオプションはそれに応じて更新されません。 SCL-10085 を参照してください。他のJDK(この例では1.7)が一般的に構成されている場合、エラーは発生しませんが、Project SDKは静かに変更されます。そうでない場合、このエラーが発生します。

この問題は、「。idea/sbt.xml」の値を適切なJDKバージョンに手動で編集することで簡単に解決できます。

20
F30

「SBTタスク」でリフレッシュを実行しようとすると、同じエラーが発生します。

開いた

Preferences -> Language & Frameworks -> Scala Compiler Server

オンにする

Run compile server (in external build mode)

プロジェクトの更新が完了したら、エディターでコードを変更したときにホットスワップバックを有効にするには、プロジェクトを再度オフにします。

7
Onur Aktaş

Settings -> Language & Frameworks -> Scala Compiler Serverを開かなければなりませんでした

次に、<No SDK>であったJVM SDKをそこに設定します。

これは、Project Structure -> ProjectでのプロジェクトSDKの設定に追加されました。

スクリーンショットはこちら をご覧ください。

4

IntelliJ 13.1.6>ファイル>プロジェクト構造>プロジェクトSDKの設定

1
soheildb

私にとって、上記の提案は何らかの理由で役に立たなかった。ただし、プロジェクトのデフォルト>プロジェクトの構造(ようこそ画面)で、デフォルトのプロジェクトSDKがGo SDKに設定されていることがわかりました。

私にとってうまくいったのは、このデフォルトのSDKをJava JDKに設定することでした。

1
edudojevic

プロジェクト設定からJava1.6とJava1.7を削除した後、同じ問題が発生しました(デフォルトとしてJava8を使用)。

最後に、SBT JVM構成をカスタムJavaに変更することで問題を解決します(設定->ビルド、実行、デプロイメント->ビルドツール-> SBT)。

1
wu zhonglin

Scalaプラグインの latest Nightlies は、プロジェクトJDKの設定方法を変更します。これにより、ほとんどの場合、これが解決されます。いくつかのケースでまだ壊れているかどうか教えてください。

0
Justin Kaeser

私の場合、「モジュール設定を開く」>「モジュール」>「依存関係」>「モジュールSDK」でJDKを選択しました。ただし、SBTはプロジェクトレベルでJDKを探していました。これは、@ michasmが上記で指摘したように、[モジュール設定を開く]> [プロジェクト]> [プロジェクトSDK]で設定されます。

0
Shiva

プライマリモジュールのプロジェクトSDKがPythonであり、JDK(sbtプロジェクトのインポート)であるセカンダリモジュールを追加しようとしたときに、多言語プロジェクトでこれが起こりました。

Sbtモジュールを追加するために、一時的にプライマリモジュールのプロジェクトSDKをJDKに切り替える必要がありました。その後、戻って各モジュールを正しいSDKに変更することができました。

0
Bryan Johnson