我目前正在学习 OCP Java 11 认证,并且正在研究基本的 JDK 命令。
在学习指南中有一个复习题提到 jar
命令还支持 -cp
选项(类路径)。这是真的?我不知道这样的事情,我也没有在 official docs 中找到信息.
我知道 -C
选项,提到要存档的文件所在的路径。此外,java
和 javac
接受 -cp
。
我开始相信这是学习指南中的错误,但我想先仔细检查一下。
这有效吗?
jar -cf newJar.jar -cp /sample/dir .
这肯定是:
jar -cf newJar.jar -C /sample/dir .
如果类路径参数确实有效,-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
也不包含 - 它只是在 a predefined array of recognized options 中查找字符串.由于这里定义了-p
/--module-path
,所以-c
不能和它组合成-cp
.
只是为了好玩,让我们检查一下 Main
。有 parseArgs
,它做 understand combined flags and switches over each individual letter .这是您将找到 -c
和 -P
的地方,因此 -cP
可能会起作用。我将把它作为练习留给读者。 😉
关于java - Java 11 jar命令支持classpath参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61717900/