为什么我必须使用:classes:。 -classpath参数中的jar后面的符号?

时间:2019-03-19 08:13:57

标签: java classpath javac

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

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

我想知道:

  1. :.这些符号代表一个参数吗?:关键字之后的.classes分别是不同的参数吗?他们代表什么?
  2. 为什么我们需要在classes:.之后再提供somejar.jar?和所有这些组合一样:
    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 ..命令有何不同?有人可以清楚地说明这一点吗?

1 个答案:

答案 0 :(得分:0)

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

;用于在Windows操作系统下定界文件夹。

:用于在* nix操作系统下定界文件夹。

-d classes参数与classes:.结合使用意味着,已编译的.class文件将放置在classes文件夹中,而不是基于包层次结构的标准放置。

因此,将类作为类路径的附加参数包含在内,可以在编译新的Java类时引用以前编译的类文件。 .是对从中执行javac命令的目录(当前的工作目录)的类路径引用。

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

参考文献: