默认情况下,类路径中的当前路径是`.`吗?

时间:2014-10-07 22:37:46

标签: java ubuntu

第二个命令是否将当前路径添加为另一个搜索路径?

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中,因此不需要显式指定?

感谢。

4 个答案:

答案 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

如果您在当前路径中有一个jar文件,

起作用

正确的是

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上,路径分隔符是;分号。

在其他平台上,分隔符是冒号:

这符合各种平台上的标准路径类系统。

相关问题