2012-02-17 19 views
8

クラスパスの実際の動作を理解しようとしています。ウェブの周りに検索した後、これは私がこれまでに達しているところです。Javaクラスパス - Linux

私は/etc/environment

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

を追加しました。私は途中で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" 

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

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

行を削除し、それがすでに設定されているので、その後source ...それはCLASSPATHを削除しません

+0

クラスパスをどのように削除しますか? –

+0

なぜあなたはそのすべてのことをやっていますか、あなたの環境は何ですか?/etc/environmentは、グラフィカルアプリケーションの環境変数を定義するために使用されます。グラフィックをお持ちの場合は、IDEを使用することができます。あなたのホームフォルダ+プロジェクトをクラスパスに含めることで、なぜこのすべての問題に行きますか? – hovanessyan

+0

javacを実行するたびに定義することなく、特定のフォルダからパッケージをインポートするためにCLASSPATHを永続的に設定しようとしています。 – tomatoeggs

答えて

5

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

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

この方法でソースを作成することができ、新たに開始されたbashはすぐに設定を適用します。

+1

うまく動きました。今はすべてがスムーズに見えます。ご協力ありがとうございました。 – tomatoeggs

2

。既に定義されている変数はクリアされません。

+0

唯一の方法は、新しいCLASSPATHを適用するためにシステムを再起動することです。 – tomatoeggs

+0

'export CLASSPATH ="/home/foo:/ home/foo/Java_code/my_code " "を '〜'ディレクトリの '.bashrc'ファイルに入れて、ログインするたびに変数を設定することができます。 CLASSPATH変数を設定解除するには、 'unset CLASSPATH'を実行してください –

+0

ありがとうございました。あなたのご意見は本当に私を助けました。今はすべてがスムーズです。 – tomatoeggs

1

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

参照:

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

+0

Jesperに感謝します。あなたの情報は本当に貴重です。 – tomatoeggs

4
export CLASSPATH="" 

またはより良い

unset CLASSPATH 

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

関連する問題