Windows 7OSでCordova6.4.0を使用していますが、Androidバージョンをビルドしようとするとこのエラーが発生します。
Java Home変数がJDKパスに正しく設定されていますが、なぜこの問題が発生するのかわかりません。何か提案がありますか?
回答:
1.8を含む以前のすべてのJDKをアンインストールします。JDK1.8をインストールします。
Add or Remove Programs/Program Features
の中でWindows OS
。次に、以前のJavaバージョンをすべて削除します。私が持っていたversion 7
にもインストールした後uninstalling
、それ、cordova run android
働いていました。幸運を。
java
が、しませんでしたjavac
!
JAVA_HOME
正しい1.8JDKを指していたが、システムのデフォルトを更新するだけで、Cordovaは満足した。
うまくいったのは、jdk9をアンインストールしてjkd8.xを再インストールすることでした。
Macの場合、アンインストールするには、ターミナルに移動して次の手順に従います。
cd /Library/Java/JavaVirtualMachines
sudo rm -rf jdk-9.0.1.jdk
次に、Oracleから.dmgパッケージをダウンロードして、jdk8.xをインストールします。
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-環境変数を更新します。
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
新しいターミナルセッションを開き、失敗していたコマンドを実行します。これで動作するはずです。
動作しませんでした?
他の理由で失敗した場合、考えられるデバッグプロセス:
古いバージョンのJDKをアンインストールしても機能します。しかし、それは私が推測する回避策かもしれません。同じ問題に直面し、新しいバージョンのJDKと古いバージョンのJDKパスの両方が'path
環境変数に記載されていることに気付きました。
'path
'環境変数から古いバージョンのJDKパスを削除すると、うまくいきました。それが誰かにも役立つことを願っています。
私の場合、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。*が必要なようです。
MAC :: / Library / Java / JavaVirtualMachinesに移動します。jdk1.8.0_201.jdkのみがあることを確認します。多数ある場合は、他のJDKを削除します。
JDKのバージョンが多い場合は、実行できます
export JAVA_HOME="/usr/local/env/java/jdk1.8.0_131.jdk/Contents/Home/"
cordovaビルドの前に、特定のバージョンのjdkを使用します:)
Windowsでミックスを正しく行うには、次のことを行う必要があります
C:\Program Files\Java\jdk1.8.0_162
追加しないでください\bin
。;
を入れ、この値をシステムパスに追加します。例:C:\Program Files\Java\jdk1.8.0_162\bin;
ここに\bin
が追加されます。注:環境変数には注意が必要です。;で閉じる必要があります。別のものを開く前に。そのため、値を追加する前に1つ、値の後に1つ配置して、値を閉じます。
$ ls -l /Library/Java/JavaVirtualMachines/
$ ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin/javac /usr/local/bin/javac
$ 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
、私にとって有効でした。
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をインストールした場所によって変わる場合があります)
これはあなたの問題を解決するはずですそれが役立つことを願っています
答えはすでに出ていますが、どこが間違っているのかを理解するのに時間がかかったので、他の人の時間を節約できることを願ってこれを投稿することにしました
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**
それは古い質問ですが、私は同じ問題を抱えていたので、エラーには別の原因がありました。ここに短い答えがあります。
Windows(のみ)およびWebstorm IDE2019.2で発生した問題
バージョン2019.2では、Webstormに問題がありました。これは、(OSからの)ターゲットJava jdkではなく、%JAVA_HOME%変数にopenjdkを内部的に使用したためです。
私の場合(ええ、それは古いです、それは古いコルドバプロジェクトです...)
java -version
Windows 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
出力はどちらの場合も同じになります。
それが誰かを助けることを願っています!
このエラーは、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。*がすでにインストールされていると仮定します。
%JAVA_HOME%\bin
またはC:\Program Files\Java\jdk1.8.0_251\bin
が追加されていることを確認します%JAVA_HOME%\bin
JDK1.8を指すPATHが優先または上書きされました。*これらがない場合は追加しないでください。オーバーライドする可能性のある他のPATHエントリを見つけてください。 %JAVA_HOME%\bin
%JAVA_HOME%\bin
%JAVA_HOME%\bin
Java 8を指すPATHは、JDK11を指す他のPATHエントリよりも優先されるようになりました。
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)
修繕!
AndroidSDKはJava9をサポートしていないようです。JDK1.8に戻りたくない場合は、8にダウングレードしてください。これは私にはばかげています。JDK 8は私にとっては機能しますが、JAVA_HOME環境変数をJDKインストールの場所に正しく設定してください。
公式のCordovaドキュメントによると、日付(2018年4月)まではJDK1.8のみをサポートします。または、cordova内のバージョン検出スクリプトに問題がある可能性があります。
_
さらに必要になった場合に備えて、古いJDKフォルダの名前をに変更しました。
C:\Program Files (x86)\Java\_jdk1.7.0_40
C:\Program Files (x86)\Java\_jre7
私はWindowsを使用していて、2つのjdk1.8バージョンと14バージョンを持っています...
同じ問題に直面し、いくつかのデバッグの後、解決策を見つけます。
そしてそれは解決しました
この回答の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