先日から学校でjavaを習いはじめました。
家でも自分でいろいろやってみたいと思うのですが。

本で書いてある、コンパイル・実行の方法がなぜか学校のと家のではとが違うようなのです。

本ではコンパイルは(ファイル名はHello.javaです)

javac Hello.java なのに
学校では
%JAVA HOME%\bin\javac Hello.java
と入力しないとコンパイルされません。

しかしこれは家のPCでは上の方法で普通に出来ます。

実行は本では java Hello なのに

学校・家では java -cp . Hello と打たなければ実行することができません。

これはどうしてなのでしょうか?
お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>javac Hello.java なのに


>学校では
>%JAVA HOME%\bin\javac Hello.java
>と入力しないとコンパイルされません。
これは、mwatana2さんのおっしゃる通り、javac.exeの
検索パスを環境変数PATHで通しているか、否かの
違いだと思われます。
おそらく、学校のPCではjavac.exeの検索パスを
環境変数PATHで通していないため、明示的に
%JAVA HOME%\bin\javac Hello.javaと入力しないと
javacが起動できないのでしょう。

>実行は本では java Hello なのに
>学校・家では java -cp . Hello と打たなければ実行
>することができません。

mwatana2さんが提示されたURLを参考にしていただければ
大体ご理解いただけるかと思いますが、少し補足します。
Sunのドキュメント「クラスパスの設定」を見ると、
以下の記述があります。

************************************************
デフォルトのクラスパスは、現在のディレクトリです。
このデフォルトは、CLASSPATH変数を設定したり、
-classpath コマンド行オプションを使用したりすると
オーバーライドされます。そのため、検索パスに現在の
ディレクトリを含める場合には、新しい設定に「.」を
含める必要があります。
************************************************

とあります。
つまり、クラスパスの明示的な設定方法は「CLASSPATH変
数で設定する」、「-classpathコマンド行オプション
で設定する」の2つの方法があるが、どちらの方法も使用
せず、クラスパスの設定を一切行っていない場合は、
クラスパスとして、カレントディレクトリのみが設定され
たものとみなす。
「CLASSPATH変数」もしくは、「-classpath」で、明示的
にクラスパスを設定した場合は、設定されたクラスパスをそ
のま採用する。すなわち、カレントディレクトリは、設定
されたクラスパス内に存在しなければ、クラスパスとして
は見なされない。もし、カレントディレクトリもクラス
パスとして認識させたいならば、「-classpath」もしくは
「CLASSPATH変数」の指定の中にカレントディレクトリ
"."を含めなさい。

ということです。

> 学校・家では java -cp . Hello と打たなければ実行
することができません

おそらく、学校・家のPCの環境変数CLASSPATHに、すでに
どこかのディレクトリがクラスパスとして設定されており
その中にカレントディレクトリの指定"."が入っていない
のでしょう。
ですから、環境変数CLASSPATHを無効にし、カレントディ
レクトリをクラスパスとして新たに指定する方法をとらな
いと("-cp ."をコマンドで指定する)Hello.classが実行
できないのしょう。

参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs …
    • good
    • 0
この回答へのお礼

えっと、(^_^;)すみません、本当に初心者なのもので50%くらいは理解できたと思うのですが。

環境変数CLASSPATHを変えれば、javaの実行は

java 名前  でできるということですね


まだはじめたばかりなので、まず環境変数について勉強します^^;

ありがとうございました

お礼日時:2005/04/15 13:38

>環境変数CLASSPATHを変えれば、javaの実行は


>java 名前 でできるということですね

そのとおりです。
java <実行クラス名> で実行するためには、
環境変数CLASSPATHが既に設定されているならば、
環境変数CLASSPATHにカレントディレクトリの指定"."を
追加する必要があるということです。
    • good
    • 0
この回答へのお礼

いろいろな本などをみてやり方が明確になりました^^
みなさんのおかげです!ありがとうございました!

お礼日時:2005/04/16 21:30

どちらの問題もプログラムファイルがある場所を検索するための設定の問題ですね。


javaを起動するための前提条件やコマンドラインオプションは、参考URLに詳しく書かれています。

javacはJavaプログラムをコンパイルするための実行モジュールになりますが、学校の使っているPCではその実行モジュールが見つけられないので明示的に指定する必要があるようですね。
明示的に指定する以外にも PATHという環境変数にあらかじめ設定しておくこともできます。

また、-cpについてでがこれはjavaの実行モジュール(クラスファイルと呼ばれます)を見つけるための場所の指定です。 '-cp . 'とドットを指定することにより現在のディレクトリを検索するよう指示しています。
このクラスファイルの指定もまた classpathという環境変数をあらかじめ設定しておくことにより指定しなくても実行させることができるようになります。

下のURLにもっと詳しく書かれてるので呼んでみてください。

参考URL:http://www.atmarkit.co.jp/fjava/onepoint/java/jv …
    • good
    • 0
この回答へのお礼

お答えありがとうございます!

参考URLをよく見てさらに理解したいと思います!

お礼日時:2005/04/15 13:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報