[java] Gradle : ’11 .0.2 ‘에서 Java 버전을 확인할 수 없습니다.

다음 댓글을 달았습니다.

./gradlew app:installDebug

로그 만 충족해야합니다.

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

내 버전의 gradle은 5.1.1입니다.

------------------------------------------------------------
Gradle 5.1.1
------------------------------------------------------------

Build time:   2019-01-10 23:05:02 UTC
Revision:     3c9abb645fb83932c44e8610642393ad62116807

Kotlin DSL:   1.1.1
Kotlin:       1.3.11
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2+9-LTS)
OS:           Mac OS X 10.13.6 x86_64

진행 방법을 잘 모르겠습니다 (업그레이드 / 다운 그레이드를 시도했지만 지금까지 아무런 효과가 없음).

업데이트 : 실행했을 때 ./gradlew --version다음을 얻었습니다.

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.2'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

gradle-wrapper.properties포함 :

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip



답변

시스템에는 두 가지 다른 Gradle 애플리케이션이 있습니다.

  1. 시스템 전체 Gradle을
    이 응용 프로그램이 호출됩니다 gradle (arguments).

  2. Gradle을-래퍼
    Gradle을-래퍼는 모든 프로젝트에 고유 만 명령을 사용하여 프로젝트의 디렉토리 내에서 호출 할 수 있습니다 ./gradlew (arguments).

시스템 전체 gradle 버전은 5.1.1입니다 (OP가 주석에 설명 된대로 명령을 실행하면 gradle --version버전 5.1.1이 반환 됨).

그러나 실패는 gradle-wrapper ( ./gradlew) 에 대한 호출의 결과입니다 . 프로젝트의 gradle 래퍼 버전을 확인할 수 있습니까? 이를 위해 ./gradlew --versiongradlew 및 gradlew.bat 파일이있는 디렉토리의 프로젝트 폴더 내 에서 실행 합니다.

업데이트 1 :
실행이 ./gradlew --version실패하면 파일을 열어 래퍼의 버전을 수동으로 확인할 수 있습니다.

(프로젝트의 루트 폴더) /gradle/wrapper/gradle-wrapper.properties

간단한 텍스트 편집기로. 내부의 “distributionUrl”은 래퍼의 버전이 무엇인지 알려줘야합니다.

업데이트 2 :
OP의 업데이트 된 질문에 따라 gradle-wrapper의 버전은 4.1RC1입니다.
Gradle 은 Gradle 5.0에서 JDK 11에 대한 지원을 추가했습니다 . 따라서 4.1RC는 JDK 11을 지원하지 않기 때문에 이것은 확실히 문제입니다.

확실한 방법은 프로젝트의 gradle-wrapper를 버전 5.0으로 업데이트하는 것입니다. 그러나 업데이트하기 전에 gradle app:installDebug. 버전이 5.1.1이고 Java 11을 지원하는 시스템 전체에 설치된 Gradle을 사용합니다. 작동하는지 확인합니다. 그렇다면 빌드 스크립트 (파일 build.gradle)는 v.4.1RC1과 v.5.1.1 사이의 주요 변경 사항의 영향을받지 않으며 프로젝트 폴더 내의 명령 줄에서 실행하여 래퍼를 업데이트 할 수 있습니다. gradle wrapper --gradle-version=5.1.1[ *].

gradle app:installDebug제대로 실행되지 않으면 Gradle 빌드 스크립트를 업그레이드해야 할 수 있습니다. v.4.1RC1에서 5.1.1로 업데이트하기 위해 Gradle 프로젝트는 부 릴리스 간의 주요 변경 사항 및 지원 중단 된 기능에 대한 가이드 ( 1 , 2 )를 제공하므로 점진적으로 최신 버전으로 업데이트 할 수 있습니다.

또는 어떤 이유로 Gradle 빌드 스크립트를 업그레이드 할 수 없거나 업그레이드하고 싶지 않은 경우 언제든지 Java 버전을 Gradle 4.1RC1이 지원하는 버전으로 다운 그레이드하도록 선택할 수 있습니다.

[*] @lupchiazoem의 다른 답변에서 올바르게 지적했듯이 사용하십시오 gradle wrapper --gradle-version=5.1.1( ./gradlew원래 실수로 게시 한 것과는 다릅니다 ). 그 이유는 Gradle이 Java에서 실행되기 때문입니다. 작동중인 Gradle 배포 (시스템 전체에 설치된 Gradle 또는 gradle-wrapper 자체)를 사용하여 gradle-wrapper를 업데이트 할 수 있습니다. 그러나이 경우 래퍼가 설치된 Java 버전과 호환되지 않으므로 시스템 전체 Gradle (일명 gradle및 아님 ./gradlew) 을 사용해야합니다 .


답변

으로는 distributionUrl여전히 사용 랩퍼 업그레이드 이전 버전 가리키는 :

gradle wrapper --gradle-version 5.1.1

참고 : 사용 gradle하지 말고gradlew


답변

제 경우에는 JAVA_HOME변수가로 설정되었습니다 /usr/lib/jvm/jdk-11.0.2/. 다음과 같이 변수를 설정 해제하는 것으로 충분합니다.

$ export JAVA_HOME=


답변

gradle/wrapper/gradle-wrapper.properties다음 버전으로 업데이트 하면 문제가 해결되었습니다.

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip


답변

tl; dr : 실행하여 Java 다운 그레이드update-alternatives


내 시스템 gradle 버전은 4.4.1이었고 gradle 래퍼 버전은 4.0이었습니다. 몇 가지 다른 답변에서 제공하는 명령을 실행 한 후 :

gradle wrapper --gradle-version 4.4.1

여전히 동일한 오류가 발생했습니다.

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine java version from '11.0.4'.

Java 11은 gradle 4.8까지 지원되지 않았으며 내 소프트웨어 저장소에는 4.4.1 만있었습니다. (또한 최신 gradle 버전으로 업그레이드하면 컴파일하려는 패키지와 호환되지 않을 수 있습니다.)

대답은 자바를 다운 그레이드하는 것이었다. 내 시스템에는 실제로 java8이 이미 설치되어 있으며이 명령을 실행하고 지침에 따라 Java 버전간에 쉽게 전환 할 수 있습니다.

sudo update-alternatives --config java


답변

래퍼 버전은 11+를 지원하지 않기 때문에 새로운 버전의 InteliJ를 영원히 속이는 간단한 트릭을 만들 수 있습니다.

  press3x Shift -> type "Switch Boot JDK" -> and change for java 8. 

https://blog.jetbrains.com/idea/2015/05/intellij-idea-14-1-4-eap-141-1192-is-available/

또는 Java 11 이상으로 작업하려면 래퍼 버전을 4.8 이상으로 업데이트하면됩니다.


답변

긴 대답을 짧게 표현하려면 gradlew시스템 gradle도구를 사용하여 업그레이드하십시오 . 아래 업그레이드는 시스템 gradle버전이 < 5.

gradle wrapper --gradle-version=5.1.1