2011-06-24 4 views
0

私はすでにJavaがインストールされたUbuntu 10.10を持っています。私は任意のフォルダからjavaコマンドを実行することができます。私は、Javaクラスパスが設定されているためにそれが原因であると思われました。しかし、JAVA_HOMEもCLASSPATHも設定されていません。ubuntuのJavaと環境変数に関する簡単な質問

/etc/environmentの内容を見ると、PATHが/ usr/bin /に設定されていることがわかります。 'which java'は/ usr/bin/javaを返しますので、どこからでもjavaを実行できる理由はありますか?そうでない場合、それはなぜですか?

+0

[Unix.StackExchange](http://unix.stackexchange.com/)または[Ask Ubuntu](http://askubuntu.com/) –

答えて

3

コマンドがパス上にあるため、javaを実行できます。

echo $PATH 

特定のプログラムを検索するために、検索するディレクトリを表示します。 /usr/binがあなたのパスにあるので、javaと入力すると、最終的に/usr/bin/javaが表示されます。多くのシステムでは、これはシンボリックリンク(別のファイルを指すファイル)ですので、/usr/bin/java/etc/alternatives/java(実際の実行ファイルを指すシンボリックリンクでもあります)を指していることがよくあります。

環境変数JAVA_HOMEは、JAVA_HOMEをチェックし、パスに頼るのではなく動作するツールとプログラムにあります。ほとんどの現代のLinuxシステムでは、代替サブシステムによって行われた作業が、以前の(より問題のある)JAVA_HOME技術に取って代わりました。つまり、あなたはそれを要求するツールに遭遇したら、とにかくJAVA_HOMEを設定したいかもしれません。

JAVA_HOMEが普及していない理由の1つは、JAVA_HOMEにアクセスするにはシェルを実行する必要があり、誰もがシェルコマンドですべてのJavaアイテムをラップしたくないという理由があります。

+0

の方が適切な場合があります。 !! – de3

+1

@ de3、はい、答えは「はい」です。説明に明白な答えを忘れて申し訳ありません。 –

1

はい、javaのバイナリ(またはそのリンク)がパスにリストされているフォルダにある場合、パスを指定せずにjavaを実行できます(/usr/local/java/latest/bin/java -jar x.jarなど) JAVA_HOMEとCLASSPATHは何もしませんシステムパスを使用します。 JAVA_HOMEでは、他のソフトウェア(またはスクリプト)がJavaのインストール先を知ることを許可します。 CLASSPATHは、Javaにクラス(.javaファイルをコンパイルした結果の.classファイル)を探す場所を指示します。

関連する問題