6

私が持っている場合

CLASSPATH=/blah;/foo

次に実行します

java -cp bar.jar com.yourcompany.SomeMain

クラスパスは今ですか

bar.jar

またはそれは

/blah;/foo;bar.jar

基本的に、コマンドラインスイッチは既存のものを上書きまたは拡張しますCLASSPATHか?

4

3 に答える 3

4

-cp オプションが CLASSPATH 環境変数をオーバーライドするようです。

$ export CLASSPATH=Tests
$ java Printf
Team Name                      No. of Wins          No. of Losses        
Bobcats                        0                    0                    
Tigers                         1                    1                    
Lions                          2                    2                    
Cheetahs                       3                    3                    
Jackals                        4                    4                    
Leopards                       5                    5                    
Snow Leopards                  6                    6                    
Cougars                        7                    7                    
Mountain Lions                 8                    8                    
Bobcats                        9                    9                    
$ java -cp . Printf
Error: Could not find or load main class Printf

CLASSPATH 環境変数はまだフォルダー Tests に設定されていますが、-cpオプションを使用するとそれがオーバーライドされ、クラスパスが.現在のディレクトリである に変更されるため、クラス ファイルが見つかりません。

于 2013-03-25T01:53:11.917 に答える
2

はい! cp または classpath オプションはシステム変数をオーバーライドします。詳細については

http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/java.html

于 2013-03-25T01:49:41.530 に答える
2

-cp コマンド ライン スイッチはオーバーライドします。実際、-jar スイッチや IDE 固有のクラスパス設定など、いくつかの要素が CLASSPATH 環境変数をオーバーライドします。

いずれにせよ、コードの実行時にどのクラスパスが参照されるかを簡単に確認したい場合は、クラスにこの行を表示することを検討してください。

System.getProperty("java.class.path");
于 2013-03-25T02:16:15.410 に答える