第二个命令是否将当前路径添加为另一个搜索路径?
javac -cp /home/tim/program_files/programming/java/junit-4.11.jar MyTest.java
javac -cp .:/home/tim/program_files/programming/java/junit-4.11.jar MyTest.java
通过冒号分隔多个路径是否正确?
默认情况下,当前路径不总是在ClassPath中,因此不需要显式指定?
感谢。
答案 0 :(得分:5)
从Oracle的page开始设置类路径:
默认类路径是当前目录。设置CLASSPATH变量或使用-classpath命令行选项会覆盖该缺省值,因此如果要在搜索路径中包含当前目录,则必须包含“。”。在新设置中。
对于Windows使用;
,对于类Unix操作系统使用:
作为多路径的分隔符。
答案 1 :(得分:2)
第二个命令是否将当前路径添加为另一个搜索路径?
是
通过冒号分隔多个路径是否正确?
取决于平台,在unix平台:
中工作,在Windows中需要;
默认情况下,当前路径始终不在ClassPath中,因此无需显式指定?
默认情况下,当前目录存在,除非您使用-cp
覆盖它,第一种情况是第二种情况下它不存在
答案 2 :(得分:2)
如果添加类路径,则将省略,这是非常非常令人不快和意外的行为:(
此外,要添加当前路径,我发现(至少对于ubuntu而言)这不足够,无法在类路径中添加.
,但是您必须添加./*
例如(此不会有效)
java -ea -cp ".:lib/*" org.testng.TestNG suites/regression.xml
将不起作用
正确的是
java -ea -cp "./*:lib/*" org.testng.TestNG suites/regression.xml
我希望没人枪杀自己或心脏病发作!
答案 3 :(得分:1)
来自the help page (FOR WINDOWS):
-classpath classpath -cp classpath Specifies a list of directories, JAR files, and ZIP archives to search for class files. Separate class path entries with semicolons (;). Specifying -classpath or -cp overrides any setting of the CLASSPATH environment variable. If -classpath and -cp are not used and CLASSPATH is not set, then the user class path consists of the current directory (.).
请注意,在Windows上,路径分隔符是;
分号。
在其他平台上,分隔符是冒号:
。
这符合各种平台上的标准路径类系统。