“java -classpath。:”是什么意思?

时间:2011-05-02 12:01:53

标签: java classpath

没有提到这个in the documentation,但是在没有:的情况下调用它时会得到ClassNotFoundException。

全线:

java -classpath .:soy-20100708.jar HelloWorld

这也有效......

java -classpath :soy-20100708.jar HelloWorld

3 个答案:

答案 0 :(得分:5)

:用于分隔类路径条目。

因此.:soy-20100708.jar表示“在当前目录和soy-20100708.jar内搜索”。

第二个变体“:soy-20100708.jar”没有特殊含义(它是格式错误的)。 可能以某种方式解释,但我不知道任何特殊含义。

您可以发布jar文件的内容吗?它包含哪些文件以及哪些目录?

答案 1 :(得分:1)

“。”表示当前目录也被搜索,“:”是您的路径分隔符。如this website所述,分隔符取决于平台:

  

CLASSPATH分隔符与平台有关。您可以   用系统属性发现它。它通常是;   要么 :。您必须将当前目录明确放在   CLASSPATH。

答案 2 :(得分:1)

冒号“:”是unix环境中的路径分隔符,而在windows上是分号“;”分开路径。即你可以写:

java -classpath a.jar:b.jar OR java -classpath a.jar;b.jar

它将两个罐装入路径。 期间“。” period代表当前目录。请注意,目录只搜索* .class文件而不是包。

以“:”开头的版本不包含在文档中(据我所知),所以它可能是偶然的(可能会将当前dir添加到classpath aswel)

编辑: 我刚刚发现,dir / *在JAVA 6中找到dir中的所有罐子