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

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

문제 설명

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



답변

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


답변

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

sudo update-alternatives --config javac

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

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


답변

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

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

여기에 이미지 설명 입력

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


답변

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

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

cd /Library/Java/JavaVirtualMachines

sudo rm -rf jdk-9.0.1.jdk

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


답변

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 변수가 시스템 변수인지 확인하십시오.
  • 사용자 경로에 추가 되었는지 확인 경로에 변수 추가


답변

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

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


답변

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