Gradle : '11 .0.2 '에서 Java 버전을 확인할 수 없습니다.


134

다음 댓글을 달았습니다.

./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

5
이 버그 보고서 에 따르면 gradle 래퍼가 오래되었을 수 있습니까?
냉동 완두콩의 로디

내 버전의 gradle은 5.1.1이며 괜찮을 것이라고 생각합니다.
lesley2958

2
이 특정 프로젝트와 관련된 gradle 버전을 시작하는 ./gradlew 명령을 실행합니다. 프로젝트의 버전이 설치 한 하나 (5.1.1)과 동일 함을 보장도 없다
tryman

1
해당 버전 정보가 gradle --version또는 결과 ./gradlew --version입니까? Gradle 기반 프로젝트는 종종 래퍼 를 사용하여 서로 다른 개발자가 동일한 Gradle 버전을 사용하여 프로젝트를 빌드 할 수 있도록합니다. 이것은 또한 빌드를 더 안정적으로 만듭니다.
Slaw

그게 버전입니다gradle --version
lesley2958

답변:


124

시스템에는 두 가지 다른 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) 을 사용해야합니다 .


1
@tryman 감사합니다! 저에게 도움이 된 것은 업데이트 2였습니다. 일반적인 경험 법칙으로 앞으로 진행될 gradle 버전을 확인할 것이라고 생각합니다.
Avid 프로그래머

오류의 원인을 정확히 밝히지 않습니다. 다른 버전?
João Pimentel Ferreira

뭐? 업데이트 2가 꽤 명확하다고 생각했습니다. 그녀는 JDK11과 함께 버전 4.1RC1의 Gradle 래퍼를 실행하려고했습니다. Gradle은 버전 5.0에서 JDK11에 대한 지원을 추가했습니다. 그래서 @ JoãoPimentelFerreira의 혼란은 무엇입니까? 그것이 원인이었고 나머지는 프로젝트의 래퍼를 JDK11을 지원하는 최신 버전으로 업데이트하는 방법에 대한 솔루션입니다.
tryman 19

1
이제 혼란 스러울 차례입니다. 실제로 프로젝트 폴더에 gradle 래퍼와 시스템 전체 Gradle 설치가 모두있는 경우 위의 단계별 솔루션이 적합합니다. 프로젝트 폴더 내에서 update 명령을 실행하여 래퍼를 업그레이드하려고 했습니까 gradle wrapper --gradle-version=5.0? 5.0을 원하는 버전으로
바꾸십시오.

1
그러나주의 할 점 : 래퍼 버전 3.3과 모든 버전 5.x 사이에는 발생하거나 발생하지 않을 수있는 몇 가지 주요 변경 사항이있을 수 있습니다. 그래서 내 대답에서 프로젝트 래퍼를 업데이트하기 전에 업그레이드하려는 5.x 버전에서 모든 것이 원활하게 실행되는지 확인하기 위해 시스템 전체 Gradle로 프로젝트를 먼저 빌드하도록 지시합니다. 서두르면 (당신의 어조가 긴박함을 느낍니다) 언제든지 시스템 gradle을 직접 사용하거나 이전 JDK로 다운 그레이드하고 나중에 래퍼 업그레이드를 따라갈 수 있습니다.
tryman

34

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

gradle wrapper --gradle-version 5.1.1

참고 : 사용 gradle하지 말고gradlew


작동합니다. 이 명령은 내 gradle 래퍼 버전을 업데이트합니다. 감사.
Daniel

또는 gradle/wrapper/gradle-wrapper.properties distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 버전 6 의 버전 을 JDK12로 교체해도 작동하지 않는 것 같습니다. 5.1.1은 잘 작동합니다. 감사합니다.
Liam Kernighan

11

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

$ export JAVA_HOME=


1
이것은 내 문제도 해결했습니다. jenv는 처음에 내 문제를 시작했을 수 있습니다.
jokarl

나를 위해 GRADLE_HOME(5.4.1 ''로) 업데이트되었지만 4.3이상하지만 터미널을 다시 시작하면 정상적으로 작동하는 gradle 버전이 아닙니다 (여전히 이전 버전을 가리킴) . 뭔가 이상한source ~/.bash_profile
prayagupd

7

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

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

6

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

5

래퍼 버전은 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 이상으로 업데이트하면됩니다.


1
주의 사항 Android Studio에서이 솔루션을 시도하지 마십시오. 나는 그것을 부술 것이다.
Mauricio Sartori

3

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

gradle wrapper --gradle-version=5.1.1

3

여기에도 같은 문제가있었습니다. 제 경우에는 이전 버전의 JDK를 사용해야하고 sdkmanager 를 사용하여 JDK 버전을 관리하고 있으므로 가상 머신의 버전을 1.8로 변경했습니다.

sdk use java 8.0.222.j9-adpt

그 후 앱이 여기에서 예상대로 실행됩니다.




1

File-> Project Structure를 클릭하여이 문제를 해결 한 다음 JDK 위치를 Embedded JDK를 사용하도록 변경했습니다 (권장).


0

비슷한 문제가 발생했습니다. 나는 이것을 삭제했다 :

  • .idea 폴더 (YourApp> .idea> ..)의 라이브러리 및 캐시 및
  • 빌드 폴더의 내용.

    그런 다음 재건하십시오.

* 먼저 프로젝트를 백업하는 것을 잊지 마십시오 *


0

Ubuntu 18.04.3 LTS에서 동일한 문제가 발생했습니다. 제 경우에는 apt가 gradle 버전 4.4.1을 설치했습니다. 이미 설치된 Java 버전은 11.0.4입니다.

내가받은 빌드 메시지는

Could not determine java version from '11.0.4'.

당시 대부분의 온라인 문서는 gradle 버전 5.6을 참조했기 때문에 다음을 수행했습니다.

sudo add-apt-repository ppa:cwchien/gradle
sudo apt update
sudo apt upgrade gradle

그런 다음 프로젝트 초기화를 반복했습니다 (기본값으로 "gradle init"사용). 그 후 "./gradlew build"가 올바르게 작동했습니다.

나중에 gradle이 중단되는 원인이 된 "java --version"의 출력 형식 변경에 대한 주석을 읽었으며 이는 이후 버전의 gradle에서 수정되었습니다.


0

제 경우에는 이전 Unity 3D 프로젝트 용 APK를 빌드하고 가져 오려고했습니다 (Android 폰에서 게임을 할 수 있도록). 최신 Android Studio 버전과 Android Studio의 SDK Manager를 통해 다운로드 할 수있는 모든 SDK 패키지를 사용하고있었습니다. SDK 패키지는

C:/Users/Onat/AppData/Local/Android/Sdk 

그리고 내가받은 오류 메시지는 JDK (Java Development Kit) 버전 "jdk-12.0.2"를 제외하고는 동일했습니다. JDK는

C:\Program Files\Java\jdk-12.0.2

Windows의 환경 변수는 JAVA_HOME : C : \ Program Files \ Java \ jdk-12.0.2입니다.

3 시간의 조사 끝에 Unity가 JDK 10을 지원하지 않는다는 것을 알게되었습니다 https://forum.unity.com/threads/gradle-build-failed-error-could-not-determine-java-version-from-10-0-1.532169/. 내 제안은 다음과 같습니다.

  1. 이미 설치되어있는 경우 원하지 않는 JDK를 제거하십시오. https://www.java.com/tr/download/help/uninstall_java.xml
  2. 머리 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  3. 아직 로그인하지 않은 경우 Oracle 계정에 로그인 / 열기.
  4. 컴퓨터 설정 (32 비트 / 64 비트, Windows / Linux 등)을 위해 오래되었지만 작동하는 JDK 8을 다운로드하십시오.
  5. JDK를 설치하십시오. 설치 경로를 기억하십시오. ( https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/ )
  6. Windows를 사용하는 경우 환경 변수를 열고 오른쪽 클릭을 통해 Java 경로를 변경하십시오. Computer/This PC>Properties>Advanced System Settings>Environment Variables>New>Variable Name: JAVA_HOME>Variable Value: [YOUR JDK Path, Mine was "C:\Program Files\Java\jdk1.8.0_221"]
  7. Unity 3D에서을 누릅니다 Edit > Preferences > External Tools and fill in the JDK path (Mine was "C:\Program Files\Java\jdk1.8.0_221").
  8. 또한 동일한 팝업에서 SDK 경로를 편집합니다. (에서 가져옵니다 Android Studio > SDK Manager > Android SDK > Android SDK Location.)
  9. 필요한 경우 변경 사항을 적용하려면 컴퓨터를 다시 시작하십시오.

0

프로젝트 파일에 도착했습니다. gradle / wrapper / gradlewrapper.properties

거기에서 값을 distributionurl최신 버전으로 변경할 수 있습니다 . (docs.gradle.org에 있음)


0

내가 설치하려고하는 동안 나는 도커 설정에서 동일한 문제에 직면 한 Gradle-2.4JDL 11.0.7. 문제를 해결하려면 최신 버전 을 설치해야합니다 .

다음은 작동하는 Dockerfile입니다.

FROM openjdk:11.0.7-jdk
RUN apt-get update && apt-get install -y unzip
WORKDIR /gradle
RUN curl -L https://services.gradle.org/distributions/gradle-6.5.1-bin.zip -o gradle-6.5.1-bin.zip
RUN unzip gradle-6.5.1-bin.zip
ENV GRADLE_HOME=/gradle/gradle-6.5.1
ENV PATH=$PATH:$GRADLE_HOME/bin
RUN gradle --version
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.