「エラー:選択した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、2014

この回答で説明さているようにキャッシュ無効にする必要があることがわかりました。
rob mayoff 2016

回答:


204

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

ウェルカム画面からConfigure -> Project defaults -> Project structurejdkに移動して追加します。

ここに画像の説明を入力してください

そうすれば、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)が一般的に構成されている場合、エラーは発生しませんが、Project SDKは通知なしに変更されます。それ以外の場合、このエラーが発生します。

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


7

「SBTタスク」で更新を実行しようとしたときにも同じエラーが発生します。

開いた

Preferences -> Language & Frameworks -> Scala Compiler Server

オンにする

Run compile server (in external build mode)

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



1

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


1

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

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


1

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

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


0

私は、「Open Module Settings」>「Module」>「Dependencies」>「Module SDK」でJDKを選択しました。ただし、@ michasmが上記で指摘しているように、SBTは「Open Module Settings」>「Project」>「Project SDK」で設定されているプロジェクトレベルでJDKを探していました。



0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.