Cordova:JDK1.8以降の要件チェックに失敗しました


92

Windows 7OSでCordova6.4.0を使用していますが、Androidバージョンをビルドしようとするとこのエラーが発生します。

問題の説明

Java Home変数がJDKパスに正しく設定されていますが、なぜこの問題が発生するのかわかりません。何か提案がありますか?


3
OK。同じ問題が発生しましたが、1.8バージョンは別の名前で非表示になっているため、ダウンロードできませんでした。その8u152。数時間後、私はここでそれを見つけた:oracle.com/technetwork/java/javase/downloads/...
user2367101

回答:


58

1.8を含む以前のすべてのJDKをアンインストールします。JDK1.8をインストールします。


3
あなただけに行く必要が@UrbycozAdd or Remove Programs/Program Featuresの中でWindows OS。次に、以前のJavaバージョンをすべて削除します。私が持っていたversion 7にもインストールした後uninstalling、それ、cordova run android働いていました。幸運を。
aakash 2016年

1
しかし、それはどういう意味ですか?異なるJDKがインストールされている場合、cordovaはどのようにJDKを選択しますか。JDK(ビルドマシンなど)を1つしか持てないということはあり得ませんか?
Bruno Ranschaert 2016

コルドバは、あなたのJDKへのパスを見つけることができるので、あなたはまだenvionment変数を設定する必要があり superuser.com/questions/949560/...
イヴォンヌAburrow

19
@MadNeoxが他のバージョンをアンインストールすることは、解決策ではなく単なる回避策です
Gandhi

私のためにトリックをしました。appwiz.cpl(windows cmdから)に移動し、java7とjavasdk 7を削除しました
Ortiz

53

Linux(Debian / Ubuntu)では、これはJava 1.8SDKを選択することで解決できます。

sudo update-alternatives --config javac

JAVA_HOME環境変数を直接変更しても効果はないようです。

編集:コメントへの応答:これはおそらく、パッケージマネージャーを介した新しいDebian(および明らかにUbuntu)のJavaインストールがJAVA_HOME環境変数を使用してJREの場所を決定しないという事実と関係があります。詳細については、これこの投稿を参照してください。


1
あなたは私の日を作りました。私は過去数日間ですべてを試しました。Tnxがたくさん。しかし、なぜこれだけが機能するのでしょうか?変数の設定が効果がないのはなぜですか?
my- 2017

1
Ubuntuでも私のために働いていました...私はそれをしましたjavaが、しませんでしたjavac
Java9

ここで同じ発言。JAVA_HOME正しい1.8JDKを指していたが、システムのデフォルトを更新するだけで、Cordovaは満足した。
妙安

1
sudo update-alternatives --config javacを実行する場合リンクグループjavac(/ usr / bin / javacを提供)には1つの選択肢しかありません:/ usr / lib / jvm / java-11-openjdk-amd64 / bin / javac構成するものはありません。java-8に戻る必要があります-openjdkはそれを行うために離れていますか?
Taieb 2018年

なぜこれがubuntuのソリューションなのか。妙安が言ったように、なぜシステムのデフォルトを更新することはコルドバを満足させたのですか?
Jithin 2018年

39

上位バージョンのSDKをアンインストールする必要はありません。jdk1.8.0_161をインストールするか、すでにインストールされている場合はインストールしないでください。

JAVA_HOME次の図に示すように、USER変数(システム変数ではない)を設定するだけです。

ここに画像の説明を入力してください

このようにして、より高いバージョンをアンインストールする必要はなく、問題は解決されます。


9
コマンドを再度実行する前に、ターミナル/ IDEを閉じることを忘れないでください。
ダニエル

1
または、$を実行することもできます。〜/ .bashrcで環境変数を再度エクスポート
Nick Cuevas

33

うまくいったのは、jdk9をアンインストールしてjkd8.xを再インストールすることでした。

Macの場合、アンインストールするには、ターミナルに移動して次の手順に従います。

cd /Library/Java/JavaVirtualMachines

sudo rm -rf jdk-9.0.1.jdk

次に、Oracleから.dmgパッケージをダウンロードして、jdk8.xをインストールします。



23

8より大きいバージョンを使用している可能性がありますが、CordovaはJDK1.8のみをサポートしています。このリンクを表示するCordovaドキュメント

Javaのバージョン番号を実際にチェックするコードを調べました。:次を探しmodule.exports.check_javaにおけるプラットフォーム/アンドロイド/コルドバ/ libに/ check_reqs.js。220行目。Java10が将来サポートされるというチームによって残された正規表現とコメントが表示されます。

既存の正規表現は、Java 10などの最新バージョンのJavaに対して実行すると失敗します。これは、Java 8または9が次の形式で保存されるためです:1。[8-9]。**ただし、Java10は保存されます。 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-バージョンJava8をインストールするこのリンクをたどる

2-環境変数を更新します。

  • JDKをインストールした場合はJAVA_HOME
  • JREをインストールした場合はJRE_HOME

JRE8およびJDK8がインストールされた場所を指すようにします。

// 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
ダラJavaの

17

古いバージョンのJDKをアンインストールしても機能します。しかし、それは私が推測する回避策かもしれません。同じ問題に直面し、新しいバージョンのJDKと古いバージョンのJDKパスの両方が'path環境変数に記載されていることに気付きました。

'path'環境変数から古いバージョンのJDKパスを削除すると、うまくいきました。それが誰かにも役立つことを願っています。


あなたは、環境変数を設定している場合は、この便利かもしれません superuser.com/questions/949560/...
イヴォンヌAburrow

はい、これでビルドコマンドを実行できますが、実行コマンド「ionic cordova run android」で苦労し、エラーINSTALL FAILED UPDATEINCOMPATIBLEが表示されます。
supriyachauhan18年

@supriyachauhanあなたは完全なものをもう一度再インストールすることを試みることができます。それ以外の場合は、問題を絞り込むために詳細を提供する必要があるかもしれません
ガンジー

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では別のバージョンを指していた。2つを揃えた後はうまくいきました!
ahb 2018年

6

MAC :: / Library / Java / JavaVirtualMachinesに移動します。jdk1.8.0_201.jdkのみがあることを確認します。多数ある場合は、他のJDKを削除します。


5

@Hozingtonに同意します。これは、Javaバージョンを検出するCordovaコードのバグであるはずです。私がしたことは:

  1. JDK10を維持する
  2. JDK8をインストールします
  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. JDK1.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つ、値の後に1つ配置して、値を閉じます。

ここに画像の説明を入力してください

  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 greaterionic cordova build --release androidターミナルからコマンドを実行すると、Ionicアプリのビルド中にMacOSでこのエラーが発生しました。

以下のコマンドは私の問題を解決します:-

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の正しい構成と「システム変数」のパスで修正します。 ここに画像の説明を入力してください

問題の解決に役立つことを願っていますが、JDKを再インストールすることはできません。


2

MadNeoxによって投稿された答えは正しいです。1.8バージョンと同様にjdk9をインストールした場合と同様の問題に直面していました。

最初にjdk9を保持し、1.8を削除してみましたが、エラーが表示されます。要件チェックに失敗しました

次に、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。例:if JAVA_HOME=C:\Program Files\Java\jdk1.8.0_152then PATH変数には上記のパスも含まれている必要があり、重要なのは、PATH変数ですでに言及されているif JDK / JREの他のパス(存在する場合)の前です。他のアプリケーションが異なるバージョンのJavaを使用していない場合は、他のバージョンをアンインストールすることを選択できます。


1

jdk8とjdk9の両方がインストールされている場合は、バージョンがどちらであるかを確認する必要があります。

パス内で、JAVA_HOMEが指している場所。

あなたが投稿したログでは、JAVA_HOMEがJDK9につながっていることがわかります。

jdk8をcordovaにのみ使用する場合は、globel JAVA_HOME env varを変更してJDK8をターゲットにするか、cordovaCLIを使用する前に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:\ ProgramFiles \ Java \ jdk1.8.0_201を作成し、「C:\ Program Files \ Java \ jdk1.8.0_201 \ bin」を追加すると、問題が解決しました。パス変数


1

(Open)JDK8と11をWindows10にインストールしましたが、同じ問題が発生しました。私にとって、以下はうまくいきました:

  1. JDK 8を指すようにJAVA_HOMEを設定します(以前に多くの回答で言及されています)AND
  2. JDK 8を指すJAVA_HOMEパスを表示しているにもかかわらず、Cordovaが実際にPATHに含まれているJDK 11にアクセスしたため、Javaバージョンチェックが失敗したことが判明したため、PATHからJDK 11を削除(!)します。

1

それは古い質問ですが、私は同じ問題を抱えていたので、エラーには別の原因がありました。ここに短い答えがあります。

Windows(のみ)およびWebstorm IDE2019.2で発生した問題

バージョン2019.2では、Webstormに問題がありました。これは、(OSからの)ターゲットJava jdkではなく、%JAVA_HOME%変数にopenjdkを内部的に使用したためです。

私の場合(ええ、それは古いです、それは古いコルドバプロジェクトです...)

java -versionWindows cmd.exeで実行:

$ java -version
java version "1.8.0_221"

しかしjava -version、Webstormsターミナルで実行します:

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

修正は、後で(今日)リリースされたバージョン2019.2.1に付属しています。これで、Webstormはos%JAVA_HOME%変数を適切に使用し、java -version出力はどちらの場合も同じになります。

それが誰かを助けることを願っています!


1

このエラーは、JavaへのデフォルトパスがJava8またはJDK1.8以外のバージョンに設定されている場合に発生します。*

私の場合、Java8をインストールした後にJava11をインストールしました

次のコマンドを実行してテストできます。

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パスがJava8バイナリを指していることを確認する必要があります

Java8またはJDK1.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インストールでは、上部に2つのPATHエントリが追加され、%JAVA_HOME%\binJDK1.8を指すPATHが優先または上書きされました。*

これらがない場合は追加しないでください。オーバーライドする可能性のある他のPATHエントリを見つけてください。 %JAVA_HOME%\bin

ここに画像の説明を入力してください

  1. エントリが下に来るまで、エントリを上書きするには、[下に移動]をクリックします %JAVA_HOME%\bin

%JAVA_HOME%\bin Java 8を指すPATHは、JDK11を指す他の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

AndroidSDKはJava9をサポートしていないようです。JDK1.8に戻りたくない場合は、8にダウングレードしてください。これは私にはばかげています。JDK 8は私にとっては機能しますが、JAVA_HOME環境変数をJDKインストールの場所に正しく設定してください。



0

_さらに必要になった場合に備えて、古いJDKフォルダの名前をに変更しました。

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

私のマシンでは、javaとjavacの構成に一貫性がありませんでした。javaはJDK 9を指し、javacはJDK8を指していました。両方をJDK8に設定すると、問題が修正されました。
ominug 2017

0

私はWindowsを使用していて、2つのjdk1.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.