-cp和-classpath有什么区别?

12

使用

javac -cp classes helloworld.java

javac -classpath classes helloworld.java

在CMD中有何区别?


6
其中一个比另一个短。 - keyser
3个回答

9

它们是相同的,请检查http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

-classpath classpath -cp classpath 指定一个目录、JAR文件或ZIP归档文件列表以搜索类文件。使用分号(;)分隔类路径条目。指定-classpath或-cp会覆盖任何设置CLASSPATH环境变量的设置。
如果未使用-classpath和-cp,并且未设置CLASSPATH,则用户类路径包括当前目录(.)。
作为特殊便利,包含基本名称*的类路径元素被视为等同于指定具有扩展名.jar或.JAR的目录中所有文件的列表。Java程序无法区分这两个调用之间的区别。
例如,如果目录mydir包含a.jar和b.JAR,则类路径元素mydir/*被扩展为A.jar:b.JAR,除了jar文件的顺序不确定。指定目录中的所有jar文件,即使是隐藏的,都包含在列表中。仅由*组成的类路径条目将扩展为当前目录中的所有jar文件列表。定义了CLASSPATH环境变量时,也将进行类路径通配符扩展。任何类路径通配符扩展都发生在启动Java VM之前。没有Java程序会看到未展开的通配符,除非通过查询环境来展开。例如,通过调用System.getenv("CLASSPATH")。

4

这两个命令完全相同,只是告诉Java编译器你想要使用在命令行参数中指定的自定义类路径。

因此,-cp-classpath是完全等效的。

您可以在javac - Java编程语言编译器页面找到更多信息。


1

没有区别。它们都是设置类路径的选项。请参见man page了解更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接