我目前正在学习OCP Java 11认证,目前正在玩转JDK的基本命令。
在学习指南中,有一道复习题提到了 jar
命令还支持 -cp
选项(classpath)。这是真的吗?我不知道有这样的事情,我也没有在 正式文件.
我知道 -C
选项,提及要存档的文件所在的路径。另外: java
和 javac
接受 -cp
.
我开始相信这是学习指南中的错误,但我想先仔细检查一下。
这样做有效吗?
jar -cf newJar.jar -cp /sample/dir .
这个肯定是有效的。
jar -cf newJar.jar -C /sample/dir .
如果classpath参数确实有效 那么-cp和-C有什么区别?我有点糊涂了。
谢谢。
正如你所指出的,文档中并没有提到类路径,所以没有理由认为是 -cp
指定的(撇开我甚至不知道什么是 jar
可以使用类路径)。) 还是这样?或者其他选项可以组合成 -cp
? 我们怎么能确定呢?通过看代码! 🙂
有两个类涉及到解析命令行选项。Main
和 GNUStyleCommandLineOptions
. 让我们从后者开始。
在 GNUStyleOptions
该方法 parseOptions
解析参数。
static int parseOptions(Main jartool, String[] args) throws BadArgs {
int count = 0;
// [...]
// [ iterate over each argument ]
for (; count < args.length; count++) {
// [...]
// [ get the option's name ]
String name = args[count];
// [...]
// [ look up the option ]
Option option = getOption(name);
// [...]
}
return count;
}
请注意,这段代码不包含将组合选项拆开的功能,而且... getOption
也没有 - 它只是在 预先定义的公认选项阵列. 由于 -p
--module-path
此处定义为。-c
不能与之结合,以 -cp
.
只是为了好玩,让我们检查 Main
. 有 parseArgs
,其中 是否 理解组合标志,并在每个字母上进行切换。. 在这里你会发现 -c
也是一个 -P
所以 -cP
可能会有用。我把这个问题留给读者去做,😉■▄▄■▓。