web-dev-qa-db-ja.com

Javaクラスパス-Linux

クラスパスが実際にどのように機能するかを理解しようとしています。ウェブを検索した後、これは私がこれまでに到達した場所です:

私が追加しました

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"

/etc/environmentで。ちなみに私はUbuntuを実行しています。

Javaはパスを見つけて問題なくコンパイルします。

問題は、CLASSPATHを変更してから次のように変更した場合です。source /etc/environmentの場合、新しいCLASSPATHが適用されません。システムを再起動した場合にのみ適用されます。たとえば、

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"

行、次に/ etc/environmentをソースし、最後にecho $CLASSPATHを実行します。取得するのは/home/foo:/home/foo/Java_code/my_codeです。空の行が表示されるべきだと思いませんか?

システムを再起動せずに、PATHまたはCLASSPATH変数の変更をすぐに適用する方法はありますか?

/ etc/environmentファイルには元々次の行しか含まれていないことを知るのに役立つかもしれません:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

お時間をいただきありがとうございます。

10
tomatoeggs

システム全体のファイルには、ローカルからホームディレクトリへのパスを含めないでください。 /etc/environmentは、すべてのユーザーにとって必要または有益な変更を提供しない限り、そのままにしておきます。ホームディレクトリの.bashrcのCLASSPATHに変更を加えます。

  CLASSPATH=$CLASSPATH:/home/foo:/home/foo/Java_code/my_code
  export CLASSPATH

このようにして、ソースを設定できます。新しく開始されたbashには、すぐに設定が反映されます。

6
Mithrandir
 export CLASSPATH=""

以上

 unset CLASSPATH

既存のクラスパスを削除します。クラスパスを設定または設定解除できる場所は複数あります。欠落しているエントリによって設定が解除されることはありません。

5
user unknown

削除すると

export CLASSPATH="/home/foo:/home/foo/Java_code/my_code"

行、次にsource ... CLASSPATHはすでに設定されているため、削除されません。すでに定義されている変数はクリアされません。

3
Sapan Diwakar

/etc/environmentファイルは通常のシェルスクリプトではありません。システムを起動またはログインするときに、シェルスクリプトとして実行されません。したがって、source /etc/environmentは、通常システムを起動するときとは異なります。

参照: buntu環境変数

/etc/environment-このファイルは、特にシステム全体の環境変数設定用です。 これはスクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。具体的には、このファイルにはシステム全体のロケールとパスの設定が格納されます。

2
Jesper