java --classpath是否覆盖CLASSPATH或附加到它?

时间:2013-03-25 01:41:59

标签: java classpath

如果我有

CLASSPATH=/blah;/foo

然后运行

java -cp bar.jar com.yourcompany.SomeMain

类路径现在是

bar.jar

或者是

/blah;/foo;bar.jar

命令行开关基本上是否覆盖或扩充现有的CLASSPATH

3 个答案:

答案 0 :(得分: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选项时,它会覆盖它,并将类路径更改为.,当前目录,所以我的类文件再也找不到了。

答案 1 :(得分:2)

是!,cp或classpath选项会覆盖系统变量。 了解更多信息

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

答案 2 :(得分:2)

-cp命令行开关覆盖。事实上,其他一些事情会覆盖CLASSPATH环境变量,如-jar开关或IDE特定的类路径设置。

在任何情况下,如果您想快速查看运行代码时引用哪个类路径,可以考虑在您的类中显示此行。

System.getProperty("java.class.path");