文档中没有提到这一点,但是在没有使用:
时调用它会出现ClassNotFoundException。
完整代码行:
java -classpath .:soy-20100708.jar HelloWorld
这也可以正常工作...
java -classpath :soy-20100708.jar HelloWorld
:
用于分隔类路径条目。
因此,.:soy-20100708.jar
表示“在当前目录和soy-20100708.jar
内搜索”。
第二种变体“:soy-20100708.jar”没有特殊含义(它是格式错误的)。它可能会以某种方式被解释,但我不知道任何特殊含义。
您能发布jar
文件的内容吗?它包含哪些文件以及在哪些目录中?
"." 表示当前目录也会被搜索,":" 是路径分隔符。如 this website 所述,分隔符取决于平台:
CLASSPATH 分隔符是平台相关的。您也可以通过系统属性来发现它。它通常是 ; 或 :。您必须显式地将 ".", 当前目录,放在 CLASSPATH 上。
java -classpath a.jar:b.jar OR java -classpath a.jar;b.jar
它将两个JAR文件加载到路径中。 点号“。”表示当前目录。请注意,只会在目录中搜索*.class文件,而不是包。
以冒号开头的版本未被文档覆盖(据我所知),因此可能仅意外起作用(可能也会将当前目录添加到类路径中)
编辑: 我刚刚发现,在JAVA 6中,dir/*可以找到目录中的所有JAR文件
;
,因为:
已经用于表示驱动器路径。类Unix平台使用:
。 - Joachim Sauersoy-20100708.jar
中没有HelloWorld.class
,所以它必须在当前目录中,这意味着您需要在类路径中包含.
。 - Joachim Sauer