没有提到这个in the documentation,但是在没有:
的情况下调用它时会得到ClassNotFoundException。
全线:
java -classpath .:soy-20100708.jar HelloWorld
这也有效......
java -classpath :soy-20100708.jar HelloWorld
答案 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中的所有罐子