Java 11 jar命令是否支持classpath参数?

问题描述 投票:2回答:1

我目前正在学习OCP Java 11认证,目前正在玩转JDK的基本命令。

在学习指南中,有一道复习题提到了 jar 命令还支持 -cp 选项(classpath)。这是真的吗?我不知道有这样的事情,我也没有在 正式文件.

我知道 -C 选项,提及要存档的文件所在的路径。另外: javajavac 接受 -cp.

我开始相信这是学习指南中的错误,但我想先仔细检查一下。

这样做有效吗?

jar -cf newJar.jar -cp /sample/dir .

这个肯定是有效的。

jar -cf newJar.jar -C /sample/dir .

如果classpath参数确实有效 那么-cp和-C有什么区别?我有点糊涂了。

谢谢。

java jar java-11 ocpjp
1个回答
1
投票

正如你所指出的,文档中并没有提到类路径,所以没有理由认为是 -cp 指定的(撇开我甚至不知道什么是 jar 可以使用类路径)。) 还是这样?或者其他选项可以组合成 -cp? 我们怎么能确定呢?通过看代码! 🙂

有两个类涉及到解析命令行选项。MainGNUStyleCommandLineOptions. 让我们从后者开始。

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 可能会有用。我把这个问题留给读者去做,😉■▄▄■▓。

© www.soinside.com 2019 - 2024. All rights reserved.