• ベストアンサー

javaのPathの設定

 こんにちは、java勉強中の初心者です、宜しくお願いします。  javaのPathの設定をする場合の環境変数について教えて下さい。  ある参考書を見ると、『「変数名」に「JAVA_HOME」、「変数値」に 「C:\java\jdk**.**.**.**\bin;」を入力します』と書かれていましたが、 別の本には、「%JAVA_HOME%\bin」と書かれていました。  ・ この書き方は、どちらが正しいのでしょうか、どちらの書き方も正しいのでしょうか。  ・ どちらも正しいのであれば、この「%~%」の意味はどのような意味でしょうか。  ・ 「JAVA_HOME」というのは、統一されている書き方(大文字、小文字、全角、半角も含めて)  でしょうか。  以上宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

JDK をインストールしているのだと思いますが、JDK をインストールすると JRE と JDK の両方がインストールされます。 JRE は Java のプログラムの「実行環境」で、JREを使うだけならインストール後 特に設定は不要です。JREはJavaの利用者向けのものといえます。 #ウィンドウズの system32フォルダなどを path から削っちゃっているひとは #駄目かもしれませんが・・・ 一方JDKはjavaの開発キットで、技術者やサーバプログラムを対象としています。 JAVA_HOME の設定や jdk のbin フォルダの PATH へ追加は 開発者が自分で考えて設定するものです。 JAVA_HOMEの設定はJAVA_HOMEの設定が必要なサーバプログラム(Tomcatなど)が 無い限り不要ですし、jdk のbin フォルダの PATH への追加も必ずしも 必要ありません。 JDKには開発者向けのコマンドや、サーバプログラムの実行に必要になる プログラムやライブラリが含まれています。JDK の javac(Javaコンパイラ) などを手軽に使いたいときはjdk のbin フォルダの PATH へ追加します。 JAVA_HOME はJDK のインストールフォルダを設定します。サーバプログラムなどは JAVA_HOME環境変数を参照して、JDKを場所を特定します。 >『「変数名」に「JAVA_HOME」、「変数値」に >「C:\java\jdk**.**.**.**\bin;」を入力します』 JAVA_HOME は JDK のインストールフォルダを設定するので \bin; は余分ですね。 JDKのコマンドが入っているパス C:\java\jdk**.**.**.**\bin は PATH環境変数に 追加するパスです。 >別の本には、「%JAVA_HOME%\bin」と書かれていました。 何か読み違えているのでしょう。これは JAVA_HOME に値を設定する話ではなくて、 設定済みの JAVA_HOME を使って PATH にパスを追加するときのパスの表現方法 を述べています。 JAVA_HOME=C:\java\jdk**.**.**.** なら、C:\java\jdk**.**.**.**\bin と %JAVA_HOME%\bin は同じです。

htgo
質問者

お礼

 皆さん、私のあまり訳の分からない質問に適切な回答有り難う御座いました。  これでPATHについての疑問がすべて分かった訳ではないのでが、あとは自分でももう少し 勉強してみようと思います。    長々とおつきあい有り難うございました、今後ともよろしくお願いします。

その他の回答 (4)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

Javaとは関係なくなってきました。 Pathというのは、「ディレクトリを省略して実行した場合に、実行ファイルの場所を探すディレクトリの一覧」です。 なので、使われるのは ・コマンドプロンプトで、(ディレクトリ指定無しに)実行コマンドを入力したとき ・「名前を指定して実行」で、(ディレクトリ指定無しに)実行コマンドを入力したとき ・JavaでRuntime.exec等で外部プログラムを実行するときに、(ディレクトリ指定無しに)実行コマンドを指定したとき http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html 等です。 逆に言えば、「ディレクトリ指定を含めた実行コマンド」の場合はPathは使われません。 多くのGUIプログラムでは ・インストールディレクトリまで含めたショートカットを作成。 ・実行ファイル自身があるフォルダを基準に必要な外部ファイルを配置 ・レジストリにインストールディレクトリを記録 等の方法で、「コマンド名だけでの実行をしない(=Pathを使わない)」工夫をしています。 >  アプリケーションをインストールした場合に、自動でPathを設定してくれるアプリケーション、 > Pathの設定が不要なアプリケーション?もありますが、どのように見分けるのでしょうか。 ○ マニュアル、リードミー等を読む 必要なら、「インストールの仕方」といったドキュメントに書いてあるはず ○ 使ってみる 必要な設定が無ければ、うまく動作しないはず。

htgo
質問者

お礼

 kmeeさん、何度も回答有難うございます。  >多くのGUIプログラムでは  >・インストールディレクトリまで含めたショートカットを作成。  >・実行ファイル自身があるフォルダを基準に必要な外部ファイルを配置  >・レジストリにインストールディレクトリを記録  >等の方法で、「コマンド名だけでの実行をしない(=Pathを使わない)」工夫をしています。 # 見方を変えれば、結局のところ、Javaの場合には、上のような設定を自動設定にしないで  ユーザーにさせるということになるのでしょうか。   ある意味初心者には優しくないというか。。。。。   ところで、JAVAをアンインストールした場合には、設定したユーザ環境変数、システム環境変数  はOSが削除し、再度インストールした時には、再設定するという考えで良いのでしょうか。   宜しくお願い致します。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

まず、#2でも述べたように、インストーラで環境変数を設定するかどうかについては、記憶が定かではありません。 自分の環境にインストールしたのはずいぶんと前なので、どっちだったか覚えていません。 設定されていなかったら、「設定されない」が正しいです。 「環境変数」というのは、OSの機能です。Javaの機能ではありません。 http://ja.wikipedia.org/wiki/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0 「名前を大文字小文字で区別しない」 「全角半角は区別される」 といったものは、Windowsでの「環境変数」の決まり事です。 どの名前の環境変数が、どんな目的で使用されるか、というのは、各アプリケーション(OS自身も含む)での決まり事です。 JAVA_HOMEにJDKのディレクトリを設定する、というのは、Javaが決めた約束です。 ここにJDKがインストールされているものとして、Javaのコンパイルや実行が行われます。 JavaはWindows以外に、LinuxやMacでも動作します。これらのOSでは、環境変数の大文字小文字が区別されます。Windowsでは区別が無いからと「java_home」としてプログラムを書いたりすると、他OSでは動作しない、といったこともありえます。 JavaのドキュメントにJAVA_HOMEと書いてあるのだから、それにあわせるのが無難だということです。 Pathは、Windowsでの決まり事です。 これに設定しないと、例えば javac test.java などとコンパイルしようとしても、javacコマンドを見付けられずにエラーになります。 "C:\Program files\Java\JdkXXX\bin\javac" test.java 等と、場所も込みでコマンド入力する必要があります。 Windowsとしては、JAVA_HOMEは「ただの環境変数の一つ」でしかありません。 何が書いてあっても関係ありません。 ユーザーの環境変数は、ユーザー毎に独自に設定を変更できるものです。 システム環境変数は、システム全体に適用されるものです。 順番によっては、次のようなこともあるそうです。 http://www.ne.jp/asahi/hishidama/home/tech/windows/env.html

htgo
質問者

お礼

 kmeeさん、回答有難うございます。  アプリケーションをインストールした場合に、自動でPathを設定してくれるアプリケーション、 Pathの設定が不要なアプリケーション?もありますが、どのように見分けるのでしょうか。    もし、自動でPathを設定してくれないアプリケーションをインストールした場合には、 どのようにして、「Pathの設定を自動でするアプリ」、「Pathの設定を手動でユーザーが設定する アプリ」を判断するのでしょうか。  宜しくお願いします。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> #この変数名(半角、大文字_大文字)とはJava言語として統一されているということでしょうか。 決まっています。 一応、Windowsの環境変数は大文字小文字の区別は無いようですが、JAVA_HOMEは大文字にしておくのが無難です。 全角では別なものになります。 > #何が自動で設定されるのでしょうか?Pathが自動で設定されるのでしょうか。? インストーラでインストールした時に、環境変数JAVA_HOMEもPathも自動で追加/変更されていたように記憶していますが、何せ、インストールしたのがずいぶん前のことなので、定かではありません。 JAVA_HOME の方だけだったかもしれません。 > #展開とはシステムが自動で展開するという意味でしょうか。 > どこに何を展開するのでしょうか。展開するとどうなるのでしょうか。 >#「%%」で囲まれると環境変数の内容になるとは、Windowsの場合のきまりごとでしょうか。 Windowsでの話です。 Javaとは直接関係ありません。 変数名から、その内容に置き換えることを「展開」と言います。 zipから中身を取り出すことも「展開」と言いますが、それとは違います。 例えば Pathが %JAVA_HOME%\bin;%WINDIR%\system32 だったとします。これは、使用時に%~%が環境変数~の内容に置き変わります。 JAVA_HOME=C:\Program Files\Java\jdk17_0_0_0 WINDIR=C:\WINDOWS だったら、実際にPathを利用するときには C:\Program Files\Java\jdk17_0_0_0\bin;C:\WINDOWS\system32 と設定したのと同じことになります。 ------- 補足すると JAVA_HOME はJDKをインストールしたディレクトリ PathはWindowsが実行ファイルを探すときに、対象となるディレクトリの一覧 で、別のものです。 『「変数名」に「JAVA_HOME」、「変数値」に「C:\java\jdk**.**.**.**\bin;」を入力します』 というのは、間違いです。 Pathを設定するなら 『「変数名」に「Path」、「変数値」に「C:\java\jdk**.**.**.**\bin;」を追加入力します』 ですし、JAVA_HOMEを設定するなら 『「変数名」に「JAVA_HOME」、「変数値」に「C:\java\jdk**.**.**.**」を入力します』 です。 「%JAVA_HOME%\bin」 は,Java_HOMEが正しく設定されている場合に 『「変数名」に「Path」、「変数値」に「%JAVA_HOME%\bin;」を追加入力します』 です。こちらだと、JDKを変更した場合に、JAVA_HOMEだけ変更すればPathの方は自動で変更されます。

htgo
質問者

お礼

 回答有り難うございます。  遅くなりましたが、再度疑問点について質問致します。  宜しくお願い致します。   >決まっています。  >一応、Windowsの環境変数は大文字小文字の区別は無いようですが、JAVA_HOMEは大文字にして  >おくのが無難です。  >全角では別なものになります。  # これはOS側での決まりなのでしょうか、それともJAVA言語側での決まりなのでしょうか。  >インストーラでインストールした時に、環境変数JAVA_HOMEもPathも自動で追加/変更されていた  >ように記憶していますが、何せ、インストールしたのがずいぶん前のことなので、定かではありま  >せん。  >JAVA_HOME の方だけだったかもしれません。  # 友人に聞いた話では、「JAVAは、インストール時に自動で環境変数を設定しないように作られて   いる」と聞いていたですが、インストーラを持っているファイルもあり、その場合には自動設定し   てくれるということでしょうか。    もし、あるとすればどのようにすれば手に入るものでしょうか。  >補足すると  >JAVA_HOME はJDKをインストールしたディレクトリ  >PathはWindowsが実行ファイルを探すときに、対象となるディレクトリの一覧  >で、別のものです。  # 「ユーザの環境変数」で設定するJAVA_HOMEの変数と「システム環境変数」のPATH   はそもそも何故両方が必要になるのでしょうか。   お互いにその役割(設定する意味)が違うということでしょうか。    偶然の話になるかと思いますが、「ユーザの環境変数」で設定するJAVA_HOMEを   「システム環境」に設定しても、PCは一見支障なく動作しているように見えるのですが、   やはり、PCには悪い影響を与えるのでしょうか。    そもそも、「ユーザの環境変数」と「システム環境変数」が何のためにあるのか、その   使い分け?もよくわからないのですが。    何故Pathを2か所に設定してやる必要があるのか。   以上宜しくお願いします。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

PathとJAVA_HOMEと混同していませんか? PATHは、コマンドを探すディレクトリの一覧 JAVA_HOMEはJDKをインストールしたディレクトリです。 なので、 「変数名」に「JAVA_HOME」、「変数値」に「C:\java\jdk**.**.**.**\bin;」を入力します →「変数名」に「JAVA_HOME」、「変数値」に「C:\java\jdk**.**.**.**(JDKがインストールされているディレクリ)」を入力します が正しいです。あるいは、JDKをインストールした際に、自動で設定されているのでは Windowsの場合、%~%で、変数~の内容を展開します。 %JAVA_HOME%\bin とは、%JAVA_HOME%が環境変数JAVA_HOMEの内容になりますので C:\java\jdk**.**.**.**\bin の意味になります。この方法だと、JAVA_HOMEを変えるだけで、Pathも変更になるので、手間がはぶけます。

参考URL:
http://docs.oracle.com/cd/E19416-01/820-5484/6ngsjsgo5/
htgo
質問者

お礼

kmeeさん、回答有難うございます。 内容が実はあまり理解できません、再度質問いたします。 >「変数名」に「JAVA_HOME」、「変数値」に「C:\java\jdk**.**.**.**\bin;」を入力します #この変数名(半角、大文字_大文字)とはJava言語として統一されているということでしょうか。 >あるいは、JDKをインストールした際に、自動で設定されているのでは #何が自動で設定されるのでしょうか?Pathが自動で設定されるのでしょうか。? >Windowsの場合、%~%で、変数~の内容を展開します。 #展開とはシステムが自動で展開するという意味でしょうか。  どこに何を展開するのでしょうか。展開するとどうなるのでしょうか。 >%JAVA_HOME%\binとは、%JAVA_HOME%が環境変数JAVA_HOMEの内容になりますので C:\java\jdk**.**.**.**\binの意味になります。 #「%%」で囲まれると環境変数の内容になるとは、Windowsの場合のきまりごとでしょうか。  それともJAVA言語としての決まりなのでしょうか。? 以上宜しくお願いします。

関連するQ&A