Gradle-플랫폼을 타겟팅 할 수 없음 : 도구 체인을 사용하는 'Java SE 8': 'JDK 7 (1.7)'


127

로컬 Gradle 배포를 사용하여 Intellij Idea에서 Gradle 프로젝트를 가져오고 다음 메시지와 함께 스택 추적을 가져 오려고 Could not target platform: 'Java SE 8' using tool chain: 'JDK 7 (1.7)'합니다.. 누구든지 이유가 무엇인지 설명해 주시겠습니까?


어떤 JDK 버전을 사용하고 계십니까? graddle에 정의 된 것과 동일하게 사용하십시오
Elasticsearch Ninja

Gradle (gradle.properties를 통해)과 Idea 프로젝트 구조 모두에 동일한 JDK에 대한 경로를 지정했습니다. 그게 무슨 뜻입니까? 내가 놓친 것이 있습니까?
Vasiliy Vlasov

응, 그 후에 작동 했니?
Elasticsearch Ninja

1
불행하게도.
Vasiliy Vlasov

intelliJ 레벨 SDK를 보여주는 스크린 샷을 추가 할 수 있습니까?
Elasticsearch Ninja

답변:


277

이것은 나를 위해 일한 것입니다 (Intellij Idea 2018.1.2).

1) 파일-> 설정-> 빌드, 실행, 배포-> 빌드 도구-> Gradle로 이동합니다.

2) Gradle JVM : 버전 1.8로 변경

3) gradle 작업 다시 실행


4
IntelliJ에 2018년 1월 6일 (커뮤니티 에디션)에서 그러한 옵션이 없습니다
카이

13
> "환경 설정"- -> "빌드, 실행, 배포"-> "빌드 도구"-> "Gradle을"맥 "인 IntelliJ 아이디어"로 이동에
Gubatron

2
이미 얼마나 오래 전에 알고 자하면 그것을 upvoted 후 나는 ++ ... ... 다시이 문제로 실행
beauXjames

59

IntelliJ 2019의 경우 :

Intellij IDEA-> 환경 설정-> 빌드, 실행, 배포-> 빌드 도구-> Gradle-> Gradle JVM

올바른 버전을 선택하십시오.


33

IntelliJ 2019, JDK 13 및 gRPC의 경우 :

Intellij IDEA-> 환경 설정-> 빌드, 실행, 배포-> 빌드 도구-> Gradle-> Gradle JVM

올바른 버전을 선택하십시오 .

build.gradle 종속성에 아래 줄을 추가해야 할 수도 있습니다.

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

26

마지막으로 Gradle 프로젝트를 가져 왔습니다. 단계는 다음과 같습니다.

  1. 로컬 Gradle 배포에서 Intellij Idea Gradle Wrapper (gradle-2.14)로 전환했습니다.
  2. Gradle Wrapper가 JDK 8로 프로젝트를 처리 할 수 ​​있다는 실험을 통해 알아 낸대로 시스템 변수 JAVA_HOMEJDK 8 (이전에는 7 번째)으로 지정했습니다. 로만 .
  3. 이전에 수동으로 만든 파일 gradle.properties ( org.gradle.java.home변수 포함)를 Windows 사용자 .gradle 디렉토리에서 삭제했습니다 .Gradle에 추가 값을 가져 오지 않았기 때문입니다.

3
Eclipse에서도 내 시스템에 JAVA_HOME env 변수가 JDK7 (실행 echo $JAVA_HOME하여 확인)로 설정 되었기 때문에이 문제가 발생했습니다 . JAVA_HOME 시스템 전체를 변경하거나 이클립스를 시작 JAVA_HOME=/path/to/jdk8 eclipse하여이 문제를 완화하십시오
손자

7

일부 레거시 시스템으로 인해 7 호환성으로 일부 소스를 컴파일해야했기 때문에 동일한 문제가 발생했습니다. gradle 구성에서 두 가지 옵션이 java 8로 설정된 것을 알았습니다.

sourceCompatibility = 1.8
targetCompatibility = 1.8

이들을 1.7로 전환하면 JAVA_HOME이 설치된 JDK-7을 가리 키도록 유지하면서 문제가 해결되었습니다.

sourceCompatibility = 1.7
targetCompatibility = 1.7

2

다음은 나를 위해 일했습니다.

  1. IntelliJ의 오른쪽 상단으로 이동-> 아이콘 클릭
  2. 프로젝트 구조 창에서-> 프로젝트 선택-> 프로젝트 SDK에서 올바른 버전 선택-> 적용 클릭-> 확인 클릭

2

매우 관련된 문제가 있지만 더 높은 Java 버전의 경우 :

$ ./gradlew clean assemble

... <other normal Gradle output>

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

InteliJ를 사용하여 실행할 때 작업이 성공했음을 알았습니다. 라는 파일 (build.gradle과 동일한 수준)을 추가하면 .java-version내 문제가 해결되었습니다.

 # .java-version
 11.0.3


0

그래서 다른 답변에서 여러 가지 방법이 있음을 알 수 있습니다. 그러나 나는 이것을 믿지 않는다. 그것은 한 가지 방법으로 축소되어야합니다. 나는 IDE를 좋아하지만 다른 답변에서 제공된 IDE 단계를 따르면 이것이 기본적인 대수가 아님을 압니다. 내 오류는 다음과 같습니다.

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

그리고 그것을 과학적으로 해결하는 방법은 다음과 같습니다.

vi build.gradle

변경하려면 :

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

될 :

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

과학적 방법은 논쟁의 여지가 있고 공통 분모를 다루는 방법입니다.


0

이 질문은 IntelliJ에 대해 구체적으로 묻지 만 이것이 내가 Google에서받은 첫 번째 결과이므로 많은 Eclipse 사용자가 Buildship을 사용하여 동일한 문제를 겪을 수 있다고 생각합니다.

Eclipse에서 Gradle 작업 (기본보기의 콘솔 근처 하단)으로 이동하여 실행하려는 특정 작업을 마우스 오른쪽 버튼으로 클릭하고 "Gradle 실행 구성 열기 ..."를 클릭하여 Gradle JVM을 설정할 수 있습니다. "Java Home 탭으로 이동하여 프로젝트에 맞는 JVM을 선택합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.