Lý do cho “Lỗi: Không thể xác định thực thi máy ảo Java trong JDK đã chọn” là gì?


110

Tôi đang sử dụng IntelliJ IDEA 13.1.4 và cũng đã thử phiên bản 14 mới nhất.

Đang chạy SBT tôi gặp lỗi sau:

Error:Cannot determine Java VM executable in selected JDK

Tôi đã cài đặt JDK 1.7 trên máy tính của mình và trên PATH.

Trong nhật ký ( ~/Library/Logs/IntelliJIdea14/idea.logtrên MacOS) có dấu vết ngăn xếp sau:

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)

Điều gì có thể là lý do cho điều này?


Có khả năng là bạn có JRE Project SDKcho dự án được xác định. Bạn có thể kiểm tra Cài đặt dự án cho dự án được đề cập và xem cài đặt trong Dự án không?
Jacek Laskowski

Tôi thấy rằng tôi cần phải Vô hiệu hóa Bộ nhớ cache như được mô tả trong câu trả lời này .
cướp mayoff

Câu trả lời:


204

Bạn sẽ có thể giải quyết vấn đề này bằng cách thiết lập jdk từ cài đặt không phải từ hộp thoại mở / nhập dự án.

Từ màn hình chào mừng, đi tới Configure -> Project defaults -> Project structurevà thêm jdk.

nhập mô tả hình ảnh ở đây

Mở dự án sbt sẽ hoạt động tốt sau đó.

Giải pháp tìm thấy từ đây


25

Một cách khác để đặt JDK là từ cài đặt mô-đun / dự án hiện tại của bạn (cho dự án hiện tại của bạn)

Chọn Open Module Settingstừ menu ngữ cảnh của dự án (hoặc nhấn F4 mặc định),
sau đó từ tab bên trái, chọn Projectvà chỉ chính xác Project SDKtrên menu thả xuống.

nhập mô tả hình ảnh ở đây


20

Sự cố thường do phiên bản JDK sai trong ".idea / sbt.xml", ví dụ:

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

Tùy chọn này không được cập nhật tương ứng khi SDK dự án được thay đổi, hãy xem SCL-10085 . Nếu bạn có cấu hình chung JDK khác (1.7 trong ví dụ của tôi), sẽ không có lỗi nào xảy ra, nhưng SDK dự án sẽ âm thầm được thay đổi trở lại. Nếu không, lỗi này xảy ra.

Sự cố có thể dễ dàng được giải quyết bằng cách chỉnh sửa thủ công giá trị trong ".idea / sbt.xml" thành phiên bản JDK phù hợp.


7

Lỗi tương tự cũng xảy ra khi bạn cố gắng làm mới trong "nhiệm vụ SBT".

Mở

Preferences -> Language & Frameworks -> Scala Compiler Server

Bật

Run compile server (in external build mode)

Sau khi bạn hoàn thành việc làm mới dự án, hãy tắt lại dự án để bật tính năng hotswapping trở lại khi bạn thay đổi mã của mình trong trình chỉnh sửa.



1

IntelliJ 13.1.6> Tệp> Cấu trúc dự án> đặt SDK dự án


1

Tôi gặp sự cố tương tự sau khi xóa Java1.6 và Java1.7 khỏi Cài đặt dự án (với Java8 làm mặc định).

Cuối cùng tôi giải quyết vấn đề bằng cách thay đổi cấu hình SBT JVM thành Custom Java (Cài đặt -> Xây dựng, Thực thi, Triển khai -> Công cụ Xây dựng -> SBT).


1

Đối với tôi những gợi ý trên đã không giúp ích cho một số lý do. Tuy nhiên, tôi đã tìm ra rằng trong Project Defaults> Project Structure (Màn hình chào mừng) SDK dự án mặc định của tôi đã được đặt thành Go SDK.

Điều phù hợp với tôi là đặt SDK mặc định này thành Java JDK.


0

Đối với tôi, tôi đã chọn JDK trong "Mở cài đặt mô-đun"> Mô-đun> Phụ thuộc> SDK mô-đun. Tuy nhiên, SBT đang tìm kiếm JDK ở cấp dự án được đặt trong "Cài đặt mô-đun mở"> Dự án> SDK dự án như @michasm đã chỉ ra ở trên


0

Các plugin Nightlies của Scala mới nhất thay đổi cách thiết lập dự án JDK, điều này sẽ giải quyết vấn đề này trong hầu hết các trường hợp. Hãy cho tôi biết nếu nó vẫn bị hỏng trong một số trường hợp.


0

Điều này đã xảy ra với tôi trong một dự án đa ngôn ngữ khi SDK dự án của mô-đun chính của tôi là Python và tôi đang cố gắng thêm một mô-đun phụ là JDK (nhập một dự án sbt).

Tôi phải tạm thời chuyển SDK dự án của mô-đun chính sang JDK để thêm mô-đun sbt. Sau đó, tôi có thể quay lại và thay đổi từng mô-đun thành SDK chính xác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.