こんにちは、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 は同じです。
皆さん、私のあまり訳の分からない質問に適切な回答有り難う御座いました。
これでPATHについての疑問がすべて分かった訳ではないのでが、あとは自分でももう少し
勉強してみようと思います。
長々とおつきあい有り難うございました、今後ともよろしくお願いします。
No.4
- 回答日時:
Javaとは関係なくなってきました。
Pathというのは、「ディレクトリを省略して実行した場合に、実行ファイルの場所を探すディレクトリの一覧」です。
なので、使われるのは
・コマンドプロンプトで、(ディレクトリ指定無しに)実行コマンドを入力したとき
・「名前を指定して実行」で、(ディレクトリ指定無しに)実行コマンドを入力したとき
・JavaでRuntime.exec等で外部プログラムを実行するときに、(ディレクトリ指定無しに)実行コマンドを指定したとき
http://docs.oracle.com/javase/7/docs/api/java/la …
等です。
逆に言えば、「ディレクトリ指定を含めた実行コマンド」の場合はPathは使われません。
多くのGUIプログラムでは
・インストールディレクトリまで含めたショートカットを作成。
・実行ファイル自身があるフォルダを基準に必要な外部ファイルを配置
・レジストリにインストールディレクトリを記録
等の方法で、「コマンド名だけでの実行をしない(=Pathを使わない)」工夫をしています。
> アプリケーションをインストールした場合に、自動でPathを設定してくれるアプリケーション、
> Pathの設定が不要なアプリケーション?もありますが、どのように見分けるのでしょうか。
○ マニュアル、リードミー等を読む
必要なら、「インストールの仕方」といったドキュメントに書いてあるはず
○ 使ってみる
必要な設定が無ければ、うまく動作しないはず。
kmeeさん、何度も回答有難うございます。
>多くのGUIプログラムでは
>・インストールディレクトリまで含めたショートカットを作成。
>・実行ファイル自身があるフォルダを基準に必要な外部ファイルを配置
>・レジストリにインストールディレクトリを記録
>等の方法で、「コマンド名だけでの実行をしない(=Pathを使わない)」工夫をしています。
# 見方を変えれば、結局のところ、Javaの場合には、上のような設定を自動設定にしないで
ユーザーにさせるということになるのでしょうか。
ある意味初心者には優しくないというか。。。。。
ところで、JAVAをアンインストールした場合には、設定したユーザ環境変数、システム環境変数
はOSが削除し、再度インストールした時には、再設定するという考えで良いのでしょうか。
宜しくお願い致します。
No.3
- 回答日時:
まず、#2でも述べたように、インストーラで環境変数を設定するかどうかについては、記憶が定かではありません。
自分の環境にインストールしたのはずいぶんと前なので、どっちだったか覚えていません。
設定されていなかったら、「設定されない」が正しいです。
「環境変数」というのは、OSの機能です。Javaの機能ではありません。
http://ja.wikipedia.org/wiki/%E7%92%B0%E5%A2%83% …
「名前を大文字小文字で区別しない」
「全角半角は区別される」
といったものは、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/windo …
kmeeさん、回答有難うございます。
アプリケーションをインストールした場合に、自動でPathを設定してくれるアプリケーション、
Pathの設定が不要なアプリケーション?もありますが、どのように見分けるのでしょうか。
もし、自動でPathを設定してくれないアプリケーションをインストールした場合には、
どのようにして、「Pathの設定を自動でするアプリ」、「Pathの設定を手動でユーザーが設定する
アプリ」を判断するのでしょうか。
宜しくお願いします。
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の方は自動で変更されます。
回答有り難うございます。
遅くなりましたが、再度疑問点について質問致します。
宜しくお願い致します。
>決まっています。
>一応、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か所に設定してやる必要があるのか。
以上宜しくお願いします。
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/6ng …
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#の基本文法が詳しく書かれている教科書的な本ありますか 2 2023/02/11 03:48
- Java mac mini 2009 でのmac OS における Java の入れ替えについて 1 2022/12/27 19:23
- UNIX・Linux ubuntuのサーバー(virtual box)が、再起動するとデータが消えてしまいます。 4 2022/04/27 21:29
- Java JavaでWebページ作成 7 2023/07/21 21:09
- Java Javaについて質問です。 勉強し始めたばかりの初心者です。 相続税について課税額を算出するコードを 1 2022/05/31 19:02
- Java プログラミングのプの字も知りませんが、プログラミングを勉強したいです。とりあえず、学ぶものを決めない 3 2022/11/04 13:10
- IT・エンジニアリング c言語とjavaの需要について 3 2022/06/23 22:59
- その他(ゲーム) マインクラフトJAVA版の導入・ローカルマルチプレイについて 1 2022/03/23 18:59
- Java javaで質問です。 文字列2023/2/3(一桁の場合、0埋めなし)の場合にyyyyMMddに変換 3 2023/02/20 11:30
- Windows 10 pathが通らない 2 2023/03/27 11:28
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java 指定されたパスが見つかり...
-
TOMCATインストール後、コンパ...
-
コマンドプロンプトでjavaのバ...
-
環境変数JAVA_HOMEとPATHの違い
-
『javax.mail.*』が見つかりま...
-
'javac' は、内部コマンドまた...
-
JDKのインストールが動作しない...
-
Eclipseで、プロジェクト名のと...
-
html上で、バッチやexeファイル...
-
Eclipse(JAVA)のデバッグで他...
-
Eclipse・プロジェクトで、フォ...
-
split関数で区切り文字がない場合
-
Eclipseのアンインストールの仕方
-
SVFの設定について:クラスパス...
-
Eclipse「リフレッシュ」と「ク...
-
eclipse でclassesフォルダーが...
-
エラー:org.springframeworkが...
-
「ワークスペースをビルド中」...
-
.jarファイルの中身って書き換...
-
JSPのクラスをコンパイルできな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java 指定されたパスが見つかり...
-
複数のJDKを同一マシンに共存さ...
-
コマンドプロンプトでjavaのバ...
-
『javax.mail.*』が見つかりま...
-
'javac' は、内部コマンドまた...
-
Javaの環境設定(JAVA_HOME, cl...
-
jarについて
-
「%CATALINA_HOME%」とはどこの...
-
Strutsの設定エラーについて
-
cygwinでのjavaプログラムの使...
-
コマンドプロンプトが使えません!
-
内部コマンドまたは外部コマン...
-
環境変数
-
コマンドプロンプトのエラーメ...
-
JDKの使い方がわかりません
-
javacについて!!
-
LinuxへのJDK6のインストール
-
JAVA環境設定についての質問です。
-
eclipseとTomcatについて
-
javaプログラムがコンパイルで...
おすすめ情報