Gradleを実行しようとすると、次のようなエラーが表示されます。
# gradle
ERROR: Java_HOME is set to an invalid directory: /usr/lib/jvm/default-Java
Please set the Java_HOME variable in your environment to match the
location of your Java installation.
ただし、Java_HOME変数を確認すると、次のようになります。
# echo $Java_HOME
/usr/lib/jvm/Java-7-Oracle
私のJava_HOMEは.bashrcで定義されており、それがソースとして設定されていることを再確認しました。
Java -version
を実行しても、Java_HOMEが正しく設定され、PATH上にあることを確認します。
# Java -version
Java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
私はまた、/usr/bin/Java
が/etc/alternatives/Java
にシンボリックリンクしていること、そして/usr/lib/jvm/Java-7-Oracle/jre/bin/Java
に正しくシンボリックリンクしていることも確認しました。
さらに、.bash_profile
または/etc/profile
に重複するJava_HOME定義がないことを確認しました。
それで私の質問はGradleが/usr/lib/jvm/default-Java
をどのように/なぜ見つけるのか、そしてもっと重要なことにそれをどのように正しいディレクトリに向けるのか?です。
JDKを必要とする他のプログラムは問題なく動作するので、Gradleの問題だと思います。私はGradleを再インストールしても違いはありませんでした。
私は64bit Xubuntu(Ubuntu 13.10 base)を使っています。
私がUbuntu 13.10リポジトリからダウンロードした特定のGradleバイナリがJava_HOMEをエクスポートしようとしていることがわかりました。これを示唆してくれた Lucas に感謝します。
/usr/bin/gradle
行70:
export Java_HOME=/usr/lib/jvm/default-Java
この行をコメントアウトすると問題が解決し、GradleはJavaバイナリへの正しいパスを見つけます。
あなたが彼らからバイナリをダウンロードしただけの場合 ウェブサイト それはこの問題を抱えていません、それはUbuntuリポジトリ版の問題です。 13.10バージョンでは他にも問題があるようです
シンボリックリンクを追加する
Sudo ln -s /usr/lib/jvm/Java-7-Oracle /usr/lib/jvm/default-Java
解決策は、Java_HOME ==をjavacが次のように存在するbinより上にすることです。
type javac
javac is /usr/bin/javac # now check if its just a symlink
ls -la /usr/bin/javac
/usr/bin/javac -> /etc/alternatives/javac # its a symlink so check again
ls -la /etc/alternatives/javac # now check if its just a symlink
/etc/alternatives/javac -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javac
[OK]をクリックしてようやく実際のJavacの上にビンが見つかりました。
export Java_HOME=/usr/lib/jvm/Java-8-openjdk-AMD64
export PATH=$Java_HOME/bin:$PATH
上記は単純化し、一般化することができます
which javac >/dev/null 2>&1 || die "ERROR: no 'javac' command could be found in your PATH"
export Java_HOME=$(dirname $(dirname $(readlink -f $(which javac) )))
私にとっては、このエラーはGradleとしてインストールされたSudoという理由によるもので、私はデフォルトユーザーとしてGradleを実行しようとしていました。
試してください:
Sudo gradle -version
または
Sudo gradle -v
最新版のgradle
をインストールしてみてください。
Sudo add-apt-repository ppa:cwchien/gradle
Sudo apt-get update
Sudo apt-get install gradle
Ubuntuリポジトリからインストールした場合は、古いバージョンがインストールされます(私にとっては1.4でした)。古いバージョンでは、それはgradleからJavaホームをexport Java_HOME=/usr/lib/jvm/default-Java
として設定します。最新版にはこの問題はありません。
export
はあなたのJava_HOME
ですか?エクスポートしないと、設定はそのシェルの内部で開始されたコマンドに伝搬されません。また、Java -version
はJava_HOME
を使用せず、パス内の最初のJava
を使用します。 .bashrc
がこのようになっていることを確認してください。
Java_HOME=/path/to/Java/home
export Java_HOME
私は同じ問題を抱えていました、しかし私は最新バージョン2.13のためにgradleファイルの70行目にexportコマンドを見つけませんでした、しかし私はそこに愚かな間違いを理解しています、それは以下です、
Gradleフォルダ/ bin /のgradleファイルにexportコマンドの70行目が見つからない場合は、〜/ .bashrcを確認し、export Java_HOME==/usr/lib/jvm/Java-7-openjdk-AMD64/bin/Java
が見つかった場合は/bin/Java
のようにJava_HOME==/usr/lib/jvm/Java-7-openjdk-AMD64
を削除し、path>に追加します。 >>このexport PATH=$PATH:$HOME/bin:Java_HOME/
の代わりに、それはexport PATH=$PATH:$HOME/bin:Java_HOME/bin/Java
になります。それからsource ~/.bashrc
を実行します。
その理由は、あなたがあなたのgradleファイルをチェックするならば、あなたは70行目(exportコマンドがない場合)または75行目で見つかるでしょう、
JAVACMD="$Java_HOME/bin/Java" fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: Java_HOME is set to an invalid directory: $Java_HOME
つまり、
/bin/Java
はすでに存在するため、Java_HOME
パスから差し引く必要があります。
それは私の場合に起こりました。
Ubuntuで次のコマンドを実行したとき、私はこの問題に直面しました。
ionic build Android
この問題を解決するために、次の手順を実行しました。
ln -sf /usr/lib/jvm/Java-7-openjdk-AMD64/jre/bin/Java /usr/lib/jvm/default-Java
/ etc/environmentにJava_HOMEを追加します。
vi /etc/environment
追加:
Java_HOME="/usr/lib/jvm/default-Java"
保存した後、それを読んでください:
source /etc/environment
最後に、buildコマンドを実行できます。
また、gradleインストールフォルダ内のbinフォルダに移動して、gradle.batファイルのJava_HOMEパラメータを修正することもできます。私の場合、私のJava_HOMEはc:¥Program files¥Java¥binに設定されていました。gradle.batの中のJava_HOMEは%Java_HOME%¥bin¥Java.exeに設定されていました。
Gradle.batの中のJava_HOMEを修正しましたが、それはうまくいきました。
ありがとうございました!!!
Sudo ln -s /usr/lib/jvm/Java-7-Oracle/jre /usr/lib/jvm/default-Java
Default-Javaディレクトリへのシンボリックリンクを作成します。
あなたはあなたのJavaディレクトリを見つけることができます。
readlink -f $(which Java)
# outputs: /usr/lib/jvm/Java-7-Oracle/jre/bin/Java
# Remove the last `/bin/Java` and use it in above symbolic link command.
私にとっては、Eclipseの外部ツール設定の引数セクションに明示的に設定したことが問題でした。
私もこれに問題がありました。それが正しいときそれは間違ったディレクトリを言った。そのため、最後の/ bin/Javaを省略して、Java_HOMEという名前のローカル変数を作成しました。私にとってはうまくいった。
私のUbuntuでは、この問題について2日間頭痛がします。
ステップ1.端末whereis Java
を入力すると、次のように表示されます。
Java: /usr/bin/Java /etc/Java /usr/share/Java /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java /usr/share/man/man1/Java.1.gz
ステップ2.パスに注意してください:/usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java
bin/Java
を除外
あなたのJava_HOME = /usr/lib/jvm/Java-8-openjdk-AMD64
コマンドを実行する前に、次のように入力してみてください。
export Java_HOME="path_to_Java_home"
path_to_Java_home
はあなたのbin/Java
があるフォルダです。
Javaが正しくインストールされていれば、次のコマンドを使ってその場所を見つけることができます。
readlink -f $(which Java)
bin/Java
に入れる間、パスの終わりからJava_HOME
を削除することを忘れないでください
GRADLE_HOMEとJava_HOMEの環境が正しく設定されている場合は、JDKディレクトリを確認し、下にJava.exeファイルがあることを確認してくださいパス。
C:\Program Files (x86)\Java\jdk1.8.0_181\bin
Gradle.batファイルに記載されているエラー
:findJavaFromJavaHome
set Java_HOME=%Java_HOME:"=%
set Java_EXE=%Java_HOME%/bin/Java.exe
if exist "%Java_EXE%" goto init
echo.
echo ERROR: Java_HOME is set to an invalid directory: %Java_HOME%
echo.
echo Please set the Java_HOME variable in your environment to match the
echo location of your Java installation.
ご使用のJavaインストールを見つけることができません。だから見つけて設定
Java.exe
すべてが正しい場合は%Java_HOME%/bin
の下にあります。
これは私のために働きます(私のアカウントはクライアントによって無効にされました、そして、彼らの管理者は私のディレクトリからJava.exeを削除しました。)
私のdockercontainer(Javaを見つけられないという問題は最小限です)では、「which」はインストールされていませんでした。 gradlewを使ってプロジェクトを動かしていると、問題を解決するJava Installingを見つけるためにwhich ./gradlewが使われました。