为什么我必须使用 :类:. -classpath 参数中的 jar 之后的符号?

Why do I have to use :classes:. notation after a jar in -classpath argument?

我正在阅读一些关于高级 Java 的书,我被指示使用以下命令编译 .java 文件:

javac -d classes -classpath c:\somepath\somejar.jar;classes:.

我想知道:

  1. :.这些符号代表一个参数还是:.分别是classes关键字后的不同参数?他们代表什么?
  2. 为什么我们需要在 somejar.jar 之后提供 classes:.?作为所有这些组合:
    javac -d classes -classpath c:\somepath\somejar.jar;classes:.
    javac -d classes -classpath c:\somepath\somejar.jar;classes:
    javac -d classes -classpath c:\somepath\somejar.jar;classes
    javac -d classes -classpath c:\somepath\somejar.jar;

工作完全一样。它们生成完全相同的 .class 文件(每个 226 字节),当我将它们部署到 Web 容器中时,它们的工作方式相同。

那么这些符号有什么意义呢?以上四个 javac .. 命令有何不同?请问有哪位大神解释清楚吗?

classpath 值中使用的 ;: 分隔符用于分隔多个文件夹作为 classpath 的值。

;用于分隔Windows下的文件夹OS.

: 用于分隔 *nix OSs 下的文件夹。

-d classes 参数与 classes:. 一起表示编译后的 .class 文件将放置在 classes 文件夹中,而不是基于包层次结构。

因此,包含 classes 作为 classpath 的附加参数允许在编译新 java 时引用以前编译的 class 文件 classes。 . 是对执行 javac 命令的目录的 class 路径引用 - 当前工作目录。

这里唯一的问题是两种定界符类型的混合。为什么这样做 - 我不知道。

参考文献: