30
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gradleのインストールでパスの設定にコケた原因はこれだった

Last updated at Posted at 2016-02-13

Gradleをインストールしたときに苦労した、パスの設定の落とし穴についてのメモです。

#要約
##前提条件

  • OSはWindows8
  • Javaのバージョンは8
  • 環境変数の設定は「JAVA_HOME=(略)\jdk1.8.0_65\bin」←ここ重要

##現象
gradle -vで怒られた

ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk1.8.0_
65\bin

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

##解決策
JAVA_HOMEはbinを含めず「(略)\jdk1.8.0_65」で設定すればgradleが動くよ!

#やったこと

  • Gradle2.11をダウンロード
  • パスを通す
    • PATHに「C:\gradle-2.11\bin」を設定する
  • コマンドラインでバージョン確認
    • gradle -v
ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk1.8.0_65\bin

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

→これ。

#試行錯誤
Javaのパス設定がおかしいぞと文句を言われるんだけども、そもそも今までEclipseとかで普通に開発できてたし…
と思いgradleのパス設定の問題を疑ってみる。

##ググってみた
けど、めぼしい情報は出てこず。

##起動バッチのソースを見てみた
グーグル先生が頼れない今、手がかりはソースしかなかろうと、gradle-2.11\bin\gradleを開いてみる。

gradle-2.11\bin\gradle
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD="$JAVA_HOME/jre/sh/java"
    else
        JAVACMD="$JAVA_HOME/bin/java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD="java"
    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

はいはい。出てるエラーメッセージ見っけ。

    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
        JAVACMD="$JAVA_HOME/bin/java"

はいはい。
$JAVA_HOME/bin/javaのコマンドが実行できなくてエラーになってると。

環境変数に設定しているJAVA_HOMEはJavaルート+bin。
つまり(略)\jdk1.8.0_65\bin\bin\javaが実行できないと。
うん、そりゃそうだ。そりゃあ動かなかろうよ。

というわけで、JAVA_HOMEのパスをbin抜きで、これでどうだ!

C:\Users\toon>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_65

C:\Users\toon>gradle -v

------------------------------------------------------------
Gradle 2.11
------------------------------------------------------------

Build time:   2016-02-08 07:59:16 UTC
Build number: none
Revision:     584db1c7c90bdd1de1d1c4c51271c665bfcba978

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_65 (Oracle Corporation 25.65-b01)
OS:           Windows 8.1 6.3 amd64

できたー :smiley:

っていうかこれ、Eclipseとかの設定変えなきゃじゃん。めんどくさ!

#オマケに
ググった結果の裏取りしてみた。

C:\Users\toon>echo %JAVA_HOME%
C:\Program Files\Java\jre7

C:\Users\toon>gradle -v

------------------------------------------------------------
Gradle 2.11
------------------------------------------------------------

Build time:   2016-02-08 07:59:16 UTC
Build number: none
Revision:     584db1c7c90bdd1de1d1c4c51271c665bfcba978

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.7.0_67 (Oracle Corporation 24.65-b04)
OS:           Windows 8.1 6.3 amd64

できたー :smiley:
IDEにくっついてインストールしたJRE、とかであれば話は変わるのかもしれません。

JAVA_HOMEの設定はJDKでもJREでもよくて、
$JAVA_HOME/jre/sh/または$JAVA_HOME/bin/
にjava.exeがあれば大丈夫みたいですね。

#疑問
そもそも、Javaのパス設定ってお作法として\binまで含めて指定するもんだと思っていたのですが、
binありとbinなし、どっちの方があるべき姿なんでしょう?
http://www.javadrive.jp/install/jdk/index4.html

30
26
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?