java - Java 11 jar命令支持classpath参数吗?

标签 java jar java-11 ocpjp

我目前正在学习 OCP Java 11 认证,并且正在研究基本的 JDK 命令。

在学习指南中有一个复习题提到 jar 命令还支持 -cp 选项(类路径)。这是真的?我不知道这样的事情,我也没有在 official docs 中找到信息.

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

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

这有效吗?

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

这肯定是:

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

如果类路径参数确实有效,-cp 和-C 有什么区别?我有点困惑。

谢谢。

最佳答案

正如您所指出的,文档没有提到类路径,因此没有理由假设 -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 也不包含 - 它只是在 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/

相关文章:

java - 需要有关 Drools -version 7.X 与 java 11 兼容性的更多信息

java - 如何在 Alpine linux docker 镜像中安装 oracle jdk11?

java - Spring Hystrix 未在内部方法上触发

java - 如何检查用户是否使用 Android 浏览器?

java - 从另一个文件夹运行 Java

java - 从不同位置执行时无法从 jar 文件打开外部文件

java - 如何迭代位于运行的 .jar 文件外部的文件夹

java - 使用 log4j 将不同的日志级别记录到不同的文件

java - 如何解决eclipse中的java.lang.ClassNotFoundException

sonarqube - 带有 Maven 和 JDK 11 的 Sonar 扫描仪