web-dev-qa-db-ja.com

Gradleは正しく設定されていても間違ったJava_HOMEを見つけます

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)を使っています。

153
James Barnett

私がUbuntu 13.10リポジトリからダウンロードした特定のGradleバイナリがJava_HOMEをエクスポートしようとしていることがわかりました。これを示唆してくれた Lucas に感謝します。

/usr/bin/gradle行70:

export Java_HOME=/usr/lib/jvm/default-Java

この行をコメントアウトすると問題が解決し、GradleはJavaバイナリへの正しいパスを見つけます。

あなたが彼らからバイナリをダウンロードしただけの場合 ウェブサイト それはこの問題を抱えていません、それはUbuntuリポジトリ版の問題です。 13.10バージョンでは他にも問題があるようです

252
James Barnett

シンボリックリンクを追加する

Sudo ln -s /usr/lib/jvm/Java-7-Oracle /usr/lib/jvm/default-Java
46
Shashi

解決策は、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)  )))
16
Scott Stensland

私にとっては、このエラーはGradleとしてインストールされたSudoという理由によるもので、私はデフォルトユーザーとしてGradleを実行しようとしていました。

試してください:

Sudo gradle -version

または

Sudo gradle -v
13
Jyoti Prakash

最新版の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として設定します。最新版にはこの問題はありません。

7
Mohammed Safeer

exportはあなたのJava_HOMEですか?エクスポートしないと、設定はそのシェルの内部で開始されたコマンドに伝搬されません。また、Java -versionJava_HOMEを使用せず、パス内の最初のJavaを使用します。 .bashrcがこのようになっていることを確認してください。

Java_HOME=/path/to/Java/home
export Java_HOME
4
Lucas

私は同じ問題を抱えていました、しかし私は最新バージョン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パスから差し引く必要があります。

それは私の場合に起こりました。

4
nothingSpecial

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コマンドを実行できます。

3
Agilox

また、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を修正しましたが、それはうまくいきました。

ありがとうございました!!!

2
asp_NewBee
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.
2
Venkat Kotra

私にとっては、Eclipseの外部ツール設定の引数セクションに明示的に設定したことが問題でした。

enter image description here

2

私もこれに問題がありました。それが正しいときそれは間違ったディレクトリを言った。そのため、最後の/ bin/Javaを省略して、Java_HOMEという名前のローカル変数を作成しました。私にとってはうまくいった。

1
Bedrockbreaker

私の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

0
Las Lemieux

コマンドを実行する前に、次のように入力してみてください。

export Java_HOME="path_to_Java_home"

path_to_Java_homeはあなたのbin/Javaがあるフォルダです。

Javaが正しくインストールされていれば、次のコマンドを使ってその場所を見つけることができます。

readlink -f $(which Java)

bin/Javaに入れる間、パスの終わりからJava_HOMEを削除することを忘れないでください

0
Jasper Kinoti

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を削除しました。)

0
Harsh

[Windows]すでに述べたように、.bat -fileは%Java_HOME%/bin/Java.exeからJava.exeを見つけようとしますが、binはパス内で2回繰り返されるため、見つけられません。 gradle.batからその余分な/binを削除します。

Gradle

0
O95

私のdockercontainer(Javaを見つけられないという問題は最小限です)では、「which」はインストールされていませんでした。 gradlewを使ってプロジェクトを動かしていると、問題を解決するJava Installingを見つけるためにwhich ./gradlewが使われました。

0
lem-fr