Cordova : JDK 1.8 이상에 대한 요구 사항 확인 실패


93

Windows 7 OS에서 Cordova 6.4.0을 사용하고 있지만 Android 버전을 빌드하려고하면이 오류가 발생합니다.

문제 설명

Java Home 변수가 JDK 경로로 올바르게 설정되었지만이 문제가 발생하는 이유를 모르겠습니다. 어떤 제안이라도 제발?


3
확인. 같은 문제가 있었지만 다른 이름으로 숨겨져 있기 때문에 1.8 버전을 다운로드 할 수 없었습니다. 8u152입니다. 몇 시간 후, 난 여기가 발견 oracle.com/technetwork/java/javase/downloads/...
user2367101을

답변:


58

1.8 설치 JDK 1.8을 포함한 모든 이전 JDK 제거


3
@Urbycoz으로 이동하면 Add or Remove Programs/Program Features됩니다 Windows OS. 다음으로 이전 Java 버전을 제거하십시오. 나는했다 version 7또한 설치 후 uninstalling그것을, cordova run android했다. 행운을 빕니다.
Aakash

1
그러나 그것은 무엇을 의미합니까? 다른 JDK가 설치된 경우 Cordova는 JDK를 어떻게 선택합니까? JDK가 하나만있을 수는 없습니까 (예 : 빌드 머신)?
Bruno Ranschaert

코르도바는 당신의 JDK의 경로를 찾을 수 있도록 여전히 envionment 변수를 설정해야합니다 superuser.com/questions/949560/...
이본 Aburrow

19
@MadNeox 제거 다른 버전은 해결을하지 않는 솔루션입니다
간디

나를 위해 트릭을했다. appwiz.cpl (Windows cmd에서)로 이동하고 java 7 및 java sdk 7을 제거했습니다.
Ortiz

53

Linux (Debian / Ubuntu)에서는 다음 위치에서 Java 1.8 SDK를 선택하여 해결할 수 있습니다.

sudo update-alternatives --config javac

JAVA_HOMEenv 변수를 직접 변경해 도 효과가없는 것 같습니다.

편집 : 의견에 응답 : 이것은 패키지 관리자를 통한 새로운 Debian (그리고 분명히 Ubuntu) Java 설치 JAVA_HOME가 JRE의 위치를 ​​결정하기 위해 환경 변수를 사용하지 않는다는 사실과 관련이있을 수 있습니다 . 참조 이 게시물을 추가 정보를 원하시면.


1
당신은 내 하루를 만들었습니다. 나는 지난 며칠 동안 모든 것을 시도했습니다. Tnx 많이. 그러나 이것이 왜 작동합니까? 변수 설정이 효과가없는 이유는 무엇입니까?
my-

1
우분투에서 저를 위해 일했습니다 ... 나는 그것을 위해 그것을 java했지만 그렇지 않았습니다 javac! 이제 Java 9를 제거 할 필요가 없습니다. :)
hughjdavey

여기에도 같은 말이 있습니다. JAVA_HOME오른쪽 1.8 JDK를 가리키고 있었지만 시스템 기본값 업데이트 만 Cordova를 충족했습니다.
myoan

1
sudo update-alternatives --config javac 링크 그룹 javac (/ usr / bin / javac 제공)에는 하나의 대안 만 있습니다. / usr / lib / jvm / java-11-openjdk-amd64 / bin / javac 구성 할 항목이 없습니다. . java-8-openjdk로 돌아 가야합니다. 멀리 떨어져 있습니까?
Taieb

이것이 우분투의 솔루션 인 이유. myoan이 말했듯이 시스템 기본값을 업데이트하면 Cordova가 만족되는 이유는 무엇입니까?
Jithin

40

더 높은 버전의 sdk를 제거 할 필요가 없습니다. jdk1.8.0_161을 설치하거나 이미 설치되어 있으면 설치하지 마십시오.

이제 JAVA_HOME아래 이미지와 같이 시스템 변수가 아닌 USER 변수를 설정하십시오 .

여기에 이미지 설명 입력

이렇게하면 더 높은 버전을 제거 할 필요가 없으며 문제가 해결됩니다.


9
명령을 다시 실행하기 전에 터미널 / IDE를 닫는 것을 잊지 마십시오.
Daniel

1
또는 그냥 $ 실행할 수 있습니다. ~ / .bashrc to export the env variables again
Nick Cuevas

33

효과가 있었던 것은 jdk 9를 제거하고 jkd 8.x를 다시 설치하는 것입니다.

Mac에서 제거하려면 터미널로 이동하여 다음 단계를 따르십시오.

cd /Library/Java/JavaVirtualMachines

sudo rm -rf jdk-9.0.1.jdk

그런 다음 Oracle에서 .dmg 패키지를 다운로드하여 jdk 8.x를 설치합니다.



23

8보다 큰 버전이있을 수 있지만 Cordova는 JDK 1.8 만 지원합니다. 이 링크보기 Cordova 문서

실제로 Java의 버전 번호를 확인하는 코드를 살펴 보았습니다. 다음을 찾아 module.exports.check_java 에서 플랫폼 / 안드로이드 / 코르도바 / lib 디렉토리 / check_reqs.js . 온라인 220. Java 10이 향후 지원 될 것이라는 팀이 남긴 정규식과 주석을 볼 수 있습니다.

Java 10과 같은 최신 버전의 Java에 대해 실행하면 기존 정규식이 실패합니다. 이는 Java 8 또는 9가 1. [8-9]. ** 형식으로 저장되지만 Java 10은 저장되기 때문입니다. 10. **로 정규식은 1. [8-9]. ** 형식의 버전을 찾습니다.

// Let's check for at least Java 8, and keep it future proof so we can support Java 10
var match = /javac ((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i.exec(output);

내 솔루션 :

설치 프로그램이 특정 폴더에 각 버전을 설치하므로 현재 버전의 JRE 또는 JDK를 제거 할 필요가 없습니다.

1- 버전 Java 8 설치이 링크를 따르십시오.

2- 환경 변수를 업데이트합니다.

  • JDK를 설치 한 경우 JAVA_HOME
  • JRE를 설치 한 경우 JRE_HOME

JRE 8 및 JDK 8이 설치된 위치를 가리 키도록합니다.

// On my machine   
C:\Program Files\Java\jdk1.8.0_171 // JAVA_HOME
C:\Program Files\Java\jre1.8.0_171 // JRE_HOME

새 터미널 세션을 열고 실패한 명령을 실행하십시오. 이제 작동합니다.

작동하지 않았다?

다른 이유로 실패 할 경우 가능한 디버깅 프로세스 :

  • JAVA_HOME 및 JRE_HOME 변수가 시스템 변수인지 확인하십시오.
  • 사용자 경로에 추가 되었는지 확인 경로에 변수 추가

이것은 나에게 유일한 정답이었습니다. 자세한 정보는이 링크를 참조하십시오. evothings.com/doc/build/cordova-install-linux.html
Dara Java

17

이전 버전의 JDK를 제거하면 효과가있을 것입니다. 그러나 그것은 내가 생각하는 해결 방법 일 수 있습니다. 나는 같은 문제에 직면했고 JDK의 새 버전과 이전 버전의 JDK 경로가 'path'환경 변수에 언급되어 있음을 알았습니다 .

'path'환경 변수 에서 이전 버전의 JDK 경로를 제거하는 것이 나에게 트릭이었습니다. 누군가에게도 도움이되기를 바랍니다.


당신이 환경 변수를 설정하는 경우, 당신은이 유용한 찾을 수 superuser.com/questions/949560/...
이본 Aburrow

예, 빌드 명령을 실행할 수 있지만 여전히 'ionic cordova run android'실행 명령으로 어려움을 겪고 있으며 INSTALL FAILED UPDATE INCOMPATIBLE 오류가 표시됩니다.
supriya chauhan

@supriyachauhan 전체 항목을 다시 설치해 볼 수 있습니다. 그렇지 않으면 문제의 범위를 좁히기 위해 정교한 세부 정보를 제공해야 할 수도 있습니다
Gandhi

9

JAVA_HOME이 1.8을 가리키는 동안 내 경로 환경 변수가 java 1.7을 가리키는 것을 발견했기 때문에 경로 변수를 1.8로 편집하고 괜찮 았습니다.


8

제 경우에는 JAVA_HOME이 C : \ Program Files (x86) \ Java \ jdk1.7.0_55를 가리 켰습니다.

cmd 에서 java 를 작성했을 때 java.exe 경로와 함께 C : \ Program Files (x86) \ Java \ jdk1.7.0_55 출력, JAVA_HOME 변수를 환경 변수에서 C : \ Program Files \ Java로 변경했습니다. \ jdk1.8.0_20 & 그것은 작동했기 때문에 2 개의 jdk 인스턴스가 있고 cordova에는 v1.8. * 하나가 필요합니다.


Path 변수가 가리키는 위치를 확인하십시오. 나는 JAVA_HOME이 1.8을 가리키고 있었지만 Path에서는 다른 버전을 가리키고있었습니다. 두 가지를 정렬 한 후에 잘 작동했습니다!
ahb

6

MAC : 다음으로 이동하십시오. : / Library / Java / JavaVirtualMachines jdk1.8.0_201.jdk 만 있는지 확인하십시오. 많은 경우 다른 JDK를 제거하십시오.


5

@Hozington에 동의합니다. 이것은 Java 버전을 감지하는 Cordova 코드의 버그입니다. 내가 한 일은 :

  1. JDK 10 유지
  2. JDK 8 설치
  3. 변경 JAVA_HOMEJDK 8의 경로 및 변경path 뿐만 아니라 변수를.
  4. "cmd"를 다시 시작하고 cordova build다시 실행 하십시오.

그리고 오류가 사라졌습니다!


4

JDK 버전이 많은 경우 실행할 수 있습니다.

export JAVA_HOME="/usr/local/env/java/jdk1.8.0_131.jdk/Contents/Home/"

cordova 빌드 전에 특정 버전의 jdk를 사용하려면 :)


3

Windows 에서 믹스를 올바르게 하려면 다음을 수행해야합니다.

  1. JDK 1.8 이상의 모든 버전을 다운로드하여 설치합니다 .
  2. 환경 변수를 열고 JAVA_HOME 이라는 환경 변수를 만들고 값을 JDK 설치 경로로 설정합니다. 값 C:\Program Files\Java\jdk1.8.0_162 에을 추가하지 마십시오 \bin.

여기에 이미지 설명 입력

  1. 시스템 경로 변수에 세미콜론 ;을 입력하고이 값을 시스템 경로 에 추가합니다 ( 예 : C:\Program Files\Java\jdk1.8.0_162\bin;여기에 \bin추가됨).

참고 : 환경 변수는 까다 롭습니다 .; 다른 것을 열기 전에. 그렇기 때문에 값을 추가하기 전에 하나를, 값 뒤에 하나를 넣어 닫습니다.

여기에 이미지 설명 입력

  1. 이제 터미널을 닫고 다시 연 다음 이전 명령을 실행하십시오.

JAVA_HOME, PATH에서 java ... 주소 지정이 혼합되어 있습니다. cordova는 java12 / 13을 가리키는 PATH를 사용하고 있습니다
bortunac

3

때때로 경로를 변경하고 java-home작동하지 않습니다. 추가해야합니다.

C:\Users\[your user]\AppData\Local\Android\Sdk\platform-tools
C:\Users\[your user]\AppData\Local\Android\Sdk\tools

환경 변수 경로에도 적용됩니다.


3

오늘 Cordova : Requirements check failed for JDK 1.8 or greater명령을 실행할 때 Ionic 앱을 빌드하는 동안 Mac OS 에서도이 오류가 발생 했습니다.ionic cordova build --release android 터미널을 통해 을 .

아래 명령은 내 문제를 해결합니다.

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home"

앞으로 누군가를 도울 수 있기를 바랍니다!


3

여러 Java 버전이 설치되어 있고 제거 할 필요가없는 MacOS 답변

내가 설치 한 Java 버전 표시 :

$ ls -l /Library/Java/JavaVirtualMachines/

내 jdk1.8 버전으로 설정하려면 다음을 수행하십시오.

$ ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac /usr/local/bin/javac

내 jdk11 버전으로 설정하려면 다음을 수행하십시오.

$ ln -s /Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac /usr/local/bin/javac

-------------------------------------------------- -----------------------

메시지 내용에도 불구하고 버전 1.8을 원한다는 의미로 나타나며 이후 버전 이있는 경우이 메시지를 표시합니다 .

다음은 위의 답변으로 이끄는 이전 시도입니다. 그러면 작동했습니다 ... 설치된 항목에 따라 다른 작업을 수행해야 할 수도 있으므로 다음 메모가 도움이 될 수 있습니다.


내 jdk1.8 버전으로 설정

$ export PATH=/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home/bin/javac:$PATH

내 jdk11 버전으로 설정

$ export PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac:$PATH

...하지만 실제로는 작동하지 않습니다 /usr/bin/javac.

$ which javac
/usr/bin/javac

... 경로에서 먼저 실행되는 항목을 보려면 다음을 수행하십시오.

$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

즉, /usr/bin/javac...을 재정의 할 수 있습니다 ... 답변 상단의 명령을 참조하십시오 ... 이 답변 상단
의을 사용하여 jdk1.8로 설정하는 명령이 저에게 효과적 ln입니다.


2

이 오류 메시지는 다음과 같은 성공 화면을 사용자에게 혼란스럽게 만듭니다.코르도바 빌드 성공

오류 메시지는 사용자가 JAVA_HOME 구성으로 빌드 실패를 수정하려고합니다. 하지만 진짜 문제는 JAVA_HOME에만있는 것이 아닙니다.

JAVA_HOME의 올바른 구성과 "시스템 변수"의 경로로이 문제를 해결합니다. 여기에 이미지 설명 입력

Hope는 문제를 해결하는 데 도움이 될 수 있지만 JDK를 다시 설치하지는 않습니다.


2

MadNeox가 게시 한 답변은 정확합니다. jdk 9와 1.8 버전을 설치 한 비슷한 문제에 직면했습니다.

먼저 jdk 9를 유지하고 1.8을 제거하면 오류가 표시됩니다 .Requirements check failed

그런 다음 jdk9를 제거하고 1을 다시 설치했습니다. 이번에는 javac-version을 실행하지 못했습니다.

얼마 동안 환경 변수를 가지고 놀다가 마침내 해결책을 얻었습니다.

이 시점에서 내 시스템에는 jdk 1.8 Cordova 버전 : 7.1.0 만 있습니다.

-환경 변수 탭 열기-사용자 변수 아래에서 새 변수 PATH 생성-다음 값을 제공합니다. C : \ Program Files \ Java \ jdk1.8.0_151 \ bin (jdk를 설치 한 위치에 따라 변경 될 수 있음)

문제가 해결 될 것입니다.

대답이 이미 주어졌지만 내가 어디로 잘못 가고 있는지 알아내는 데 시간이 좀 걸렸기 때문에 다른 사람의 시간을 절약 할 수 있기를 바라며 이것을 게시하기로 결정했습니다.


1

동일한 JDK 버전 (이 경우 1.8)이 PATH환경 변수 및 JAVA_HOME. 예 : 만약 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152그렇다면 PATH변수가 위의 경로를 포함해야하고 중요한 것은 JDK / JRE가 이미 PATH변수에 언급 된 경우의 다른 경로 (있는 경우) 앞에 있어야 합니다. 다른 응용 프로그램이 다른 버전의 Java를 사용하지 않는 경우 다른 버전을 제거하도록 선택할 수 있습니다.


1

jdk8과 jdk9가 모두 설치되어있는 경우 버전이 다음과 같은지 확인해야합니다.

경로 및 JAVA_HOME이 가리키는 위치.

게시 한 로그에서 JAVA_HOME이 JDK9로 연결되는 것을 확인했습니다.

globel JAVA_HOME 환경 변수를 JDK8을 대상으로 수정하거나 cordova에만 jdk8을 사용하려는 경우 cordova CLI를 사용하기 전에 powershell에서 JAVA_HOME을 변경할 수 있습니다.

$env:JAVA_HOME="C:\Program Files\Java\jdk1.8.0_151"

**cordova build android**

1

여러 Java 버전이 설치되어 있고이를 유지해야하는 경우 다음 사항을 확인해야합니다.

  • jdk1.8을 가리키는 JAVA_HOME
  • PATH 변수에서 jdk1.8 \ bin 경로가 다른 jdk \ bin 경로 앞에 있는지 확인해야 합니다.

1

jdk1.8.0_201과 동일한 문제에 직면했습니다. JAVA_HOME = C : \ Program Files \ Java \ jdk1.8.0_201을 만들고 "C : \ Program Files \ Java \ jdk1.8.0_201 \ bin"을 추가했을 때 해결되었습니다. 경로 변수


1

Windows 10에 (Open) JDK 8 및 11이 설치되어 있는데 동일한 문제가 발생했습니다. 나를 위해 다음이 작동했습니다.

  1. JAVA_HOME을 JDK 8을 가리 키도록 설정합니다. (이전에 많은 답변에서 언급되었습니다.) 그리고
  2. JDK 8을 가리키는 JAVA_HOME 경로를 표시하지만 Cordova가 실제로 PATH에 포함 된 JDK 11에 액세스하여 Java 버전 검사가 실패한 것으로 밝혀 졌으므로 PATH에서 JDK 11을 제거 (!)합니다.

1

오래된 질문이지만 동일한 문제가 있었기 때문에 오류에는 다른 소스가 있습니다. 여기에 짧은 대답이 있습니다.

Windows (전용) 및 Webstorm IDE 2019.2에서 발생한 문제

버전 2019.2에서 Webstorm은 내부적으로 (OS에서) 대상 Java jdk 대신 % JAVA_HOME % 변수에 대해 open jdk를 사용했기 때문에 문제가있었습니다.

제 경우에는 (예, 오래된 코르도바 프로젝트입니다 ...)

java -versionWindows cmd.exe에서 실행 :

$ java -version
java version "1.8.0_221"

그러나 java -versionWebstorms 터미널에서 실행 :

$ java -version
openjdk version "11.0.3" 2019-04-16
// more output

나중에 (오늘) 릴리스 된 패치 2019.2.1과 함께 수정 사항이 제공되었습니다. 이제 Webstorm은 os % JAVA_HOME % 변수를 그대로 사용하고java -version 두 경우 모두 출력이 동일합니다.

누군가에게 도움이되기를 바랍니다!


1

Java에 대한 기본 경로가 Java 8 또는 JDK 1.8. * 이외의 버전으로 설정된 경우 오류가 발생합니다.

제 경우에는 Java 8을 설치 한 후 Java 11을 설치했습니다.

다음을 실행하여 테스트 할 수 있습니다.

java -version

내 경우에는 다음과 같이 반환되었습니다.

java version "11.0.8" 2020-07-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.8+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.8+10-LTS, mixed mode)

이 문제를 해결하려면 Java 경로가 대신 Java 8 바이너리를 가리키는 지 확인해야합니다.

Java 8 또는 JDK 1.8. *가 이미 설치되어 있다고 가정합니다.

  1. JAVA_HOME 및 JRE_HOME이 설정되어 있는지 확인하십시오 (Java 1.8. *를 가리키는 지 확인하십시오).

환경 변수

  1. PATH 내부에 %JAVA_HOME%\bin또는 C:\Program Files\Java\jdk1.8.0_251\bin추가 되었는지 확인하십시오.

여기에 이미지 설명 입력

  1. 문제의 원인 : 내 JDK 11 설치는 맨 위에 두 개의 PATH 항목을 추가하여 우선 순위를 갖거나 %JAVA_HOME%\binJDK 1.8. *을 가리키는 PATH를 재정의합니다 .

이 항목이 없으면 추가하지 말고 재정의 할 수있는 다른 PATH 항목을 찾으십시오. %JAVA_HOME%\bin

여기에 이미지 설명 입력

  1. 아래에있을 때까지 재정의 항목에 대해 "아래로 이동"을 클릭합니다. %JAVA_HOME%\bin

%JAVA_HOME%\bin 이제 Java 8을 가리키는 PATH가 JDK 11을 가리키는 다른 PATH 항목보다 우선합니다.

여기에 이미지 설명 입력

  1. 저장하고 새 터미널을 열고 실행하십시오.
java -version

내 경우에는 다음과 같이 반환되었습니다.

java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

결정된!


0
  1. 제어판 홈으로 이동
  2. 고급 시스템 설정
  3. 환경 변수
  4. JAVA_HOME 선택
  5. 편집하다
  6. 1.8 하나의 변수 값

0

Android SDK는 Java 9를 지원하지 않는 것 같습니다. JDK 1.8로 돌아가고 싶지 않다면 8로 다운 그레이드하세요. JDK 8이 저에게 적합하지만 JAVA_HOME 환경 변수를 JDK 설치 위치로 올바르게 설정하십시오.


0

공식 Cordova 문서에 따라 날짜 (2018 년 4 월)까지 JDK 1.8 만 지원합니다. . 또는 Cordova 내의 버전 감지 스크립트에 문제가있을 수 있습니다.

Cordova : 요구 사항 설치


0

_더 필요한 경우를 대비 하여 이전 JDK 폴더의 이름을으로 변경 했고 작동했습니다.

C:\Program Files (x86)\Java\_jdk1.7.0_40 
C:\Program Files (x86)\Java\_jre7

내 컴퓨터에서 java 및 javac 구성이 일치하지 않았습니다. java는 JDK 9를 가리키고 javac는 JDK 8을 가리 켰습니다. 둘 다 JDK 8로 설정하면 문제가 해결되었습니다.
ominug

0

나는 창문을 사용하고 있고 두 개의 jdk 1.8 및 14 버전이 있습니다 ...

동일한 문제에 직면하고 일부 디버깅 후 해결책을 찾으십시오.

  1. JAVA_HOME을 올바르게 설정하십시오.
  2. 새 jdk (1.8) 버전으로 사용자 변수 PATH 값을 변경하십시오.
  3. 새 jdk (1.8) 버전으로 사용자 변수 PATH 값을 변경하십시오.

그리고 그것은 해결되었습니다


0

이 답변 의 Ubuntu / Debian Linux 버전은 openjdk 8을 설치하고 다음을 통해 기본값을 설정하는 것입니다.update-alternatives


# install (open)jdk 8
sudo apt-get install -y openjdk-8-jdk

# update java compiler and set to 1.8
update-alternatives --config javac

# update java runtime (optional)
update-alternatives --config java

# Also set $JAVA_HOME and $PATH to your .bashrc (optional)
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> ~/.bashrc
echo 'export PATH="$PATH:$JAVA_HOME/bin' >> ~/.bashrc

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