2

私は現在、OCP Java 11 認定のために勉強しており、現在、基本的な JDK コマンドをいじっています。

スタディ ガイドには、コマンドがオプション (クラスパス)jarもサポートしていることに言及しているレビューの質問があります。-cpこれは本当ですか?私はそのようなことを認識しておらず、公式ドキュメントにも情報がありませんでした。

-Cアーカイブするファイルが配置されているパスに言及して、オプションについて知っています。また、java受け入れjavacます-cp

スタディ ガイドの誤りだと思い始めていますが、最初に再確認したいと思います。

これは有効ですか?

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

これは確かに次のとおりです。

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

classpath パラメータが実際に有効な場合、-cp と -C の違いは何ですか? 私は少し混乱しています。

ありがとう。

4

1 に答える 1

1

ご指摘のとおり、ドキュメントではクラスパスについて言及していないため、それが-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

于 2020-05-12T19:53:56.437 に答える