Java中的--classpath会覆盖CLASSPATH还是追加到其后面?

7

如果我有

CLASSPATH=/blah;/foo

然后运行

java -cp bar.jar com.yourcompany.SomeMain

现在的类路径是什么

bar.jar

或者是这样。
/blah;/foo;bar.jar

基本上,命令行开关覆盖还是增强了现有的CLASSPATH

1
请参考此查询 - Jayamohan
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 选项时,它会覆盖原来的设置,并将 classpath 更改为当前目录 .,所以我的类文件无法被找到。


2

1
实际上,您提供的链接并没有说明-cp是否覆盖环境变量。它只是说环境变量和-cp会覆盖默认值(即当前目录)。 - ktm5124
是的,谢谢,链接已更新! - solaechea

2

-cp 命令行开关可以覆盖CLASSPATH环境变量,实际上,像-jar开关或特定于IDE的类路径设置等其他一些内容也会覆盖它。

无论如何,如果您想快速查看在运行代码时引用的类路径,可以考虑在您的类中显示此行。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接