Gradle - Không thể nhắm mục tiêu nền tảng: 'Java SE 8' bằng chuỗi công cụ: 'JDK 7 (1.7)'


119

Tôi cố gắng để nhập khẩu dự án Gradle trong IntelliJ IDEA với distrib Gradle địa phương và nhận được stacktrace với thông báo sau: Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'. Bất cứ ai có thể giải thích xin vui lòng những gì có thể là lý do?


bạn đang sử dụng phiên bản JDK nào? cố gắng sử dụng giống như được định nghĩa trong graddle
Elasticsearch Ninja

Tôi đã đặt đường dẫn đến cùng một JDK cho cả Gradle (thông qua gradle.properties) và trong cấu trúc dự án Idea. Đó có phải ý của bạn? Tôi có bỏ lỡ điều gì không?
Vasiliy Vlasov

yup, nó có hoạt động sau đó không?
Elasticsearch Ninja

1
Tiếc là không có.
Vasiliy Vlasov

bạn có thể thêm ảnh chụp màn hình hiển thị SDK cấp intelliJ không?
Elasticsearch Ninja

Câu trả lời:


255

Đây là những gì đã làm việc cho tôi (Intellij Idea 2018.1.2):

1) Điều hướng đến: Tệp -> Cài đặt -> Xây dựng, Thực thi, Triển khai -> Công cụ xây dựng -> Gradle

2) Gradle JVM: thay đổi thành phiên bản 1.8

3) Chạy lại nhiệm vụ gradle


4
Không có tùy chọn như vậy trong IntelliJ 2018.1.6 (phiên bản cộng đồng)
Kai

11
Trên Mac, hướng đến "IntelliJ Idea" -> "Preferences" -> "Xây dựng, thi công, triển khai" -> "Build Tools" -> "Gradle"
Gubatron

2
tôi lại gặp phải vấn đề này ... sau khi tôi đã ủng hộ nó một lần, ai biết cách đây bao lâu ... ++
beauXjames

53

Đối với IntelliJ 2019:

Intellij IDEA -> Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM

Chọn phiên bản chính xác.


27

Đối với IntelliJ 2019, JDK 13 và gRPC:

Intellij IDEA -> Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM

Chọn phiên bản chính xác .

bạn cũng có thể phải thêm dòng bên dưới trong các phụ thuộc build.gradle của mình

compileOnly group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'

25

Cuối cùng, tôi đã nhập dự án Gradle của mình. Đây là các bước:

  1. Tôi đã chuyển từ bản phân phối Gradle cục bộ sang Intellij Idea Gradle Wrapper (gradle-2,14).
  2. Tôi đã trỏ biến hệ thống JAVA_HOMEđến JDK 8 (trước đó là thứ 7) vì tôi đã tìm ra bằng các thử nghiệm rằng Gradle Wrapper có thể xử lý dự án chỉ với JDK 8 .
  3. Tôi đã xóa tệp gradle.properties được tạo theo cách thủ công (có org.gradle.java.homebiến) trong thư mục .gradle của người dùng windows vì theo tôi đoán, nó không mang lại bất kỳ giá trị bổ sung nào cho Gradle.

2
Trong Eclipse, tôi cũng gặp sự cố này vì hệ thống của tôi có biến env JAVA_HOME được đặt thành JDK7 (chạy echo $JAVA_HOMEđể kiểm tra). Thay đổi JAVA_HOME trên toàn hệ thống hoặc bắt đầu nhật thực bằng JAVA_HOME=/path/to/jdk8 eclipseđể giảm thiểu sự cố này
cháu

7

Vì tôi đã phải biên dịch một số mã nguồn có khả năng tương thích 7, do một số hệ thống kế thừa và gặp phải vấn đề tương tự. Tôi phát hiện ra rằng trong cấu hình gradle có hai tùy chọn được đặt thành java 8

sourceCompatibility = 1.8
targetCompatibility = 1.8

việc chuyển đổi chúng thành 1.7 đã giải quyết được vấn đề cho tôi, giữ cho JAVA_HOME trỏ đến JDK-7 đã cài đặt

sourceCompatibility = 1.7
targetCompatibility = 1.7

2

Những điều sau đây đã làm việc cho tôi:

  1. Chuyển đến góc trên cùng bên phải của IntelliJ -> nhấp vào biểu tượng
  2. Trong cửa sổ Cấu trúc dự án -> Chọn dự án -> Trong SDK dự án, chọn phiên bản chính xác -> Nhấp vào Áp dụng -> Nhấp vào OK

2

Tôi đã gặp sự cố rất liên quan nhưng đối với các phiên bản Java cao hơn:

$ ./gradlew clean assemble

... <other normal Gradle output>

Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.

Tôi nhận thấy rằng tác vụ đã thành công khi chạy bằng InteliJ. Thêm một tệp (cùng cấp với build.gradle) được gọi là đã .java-versiongiải quyết được sự cố của tôi:

 # .java-version
 11.0.3

1

Và vì vậy tôi thấy từ những câu trả lời khác rằng có một số cách để giải quyết vấn đề đó. Nhưng tôi không tin điều này. Nó phải được giảm thành một chiều. Tôi thích IDE, nhưng nếu tôi làm theo các bước IDE được cung cấp từ các câu trả lời khác nhau, tôi biết đây không phải là đại số cơ bản. Lỗi của tôi trông giống như:

* What went wrong:
Execution failed for task ':compileJava'.
> Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'.

Và cách giải quyết một cách khoa học là:

vi build.gradle

Để thay đổi từ:

java {
    sourceCompatibility = JavaVersion.toVersion('11')
    targetCompatibility = JavaVersion.toVersion('11')
}

để trở thành:

java {
    sourceCompatibility = JavaVersion.toVersion('8')
    targetCompatibility = JavaVersion.toVersion('8')
}

Phương pháp khoa học là phương pháp mở cho việc tranh luận và giải quyết các mẫu số chung.


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.