On Thu, 17 Jun 2021 18:12:19 GMT, Aleksei Voitylov <avoity...@openjdk.org> 
wrote:

>> test/jdk/java/lang/ClassLoader/loadLibraryDeadlock/TestLoadLibraryDeadlock.java
>>  line 95:
>> 
>>> 93:         Collections.addAll(args, "cvf", Paths.get(testClassPath, 
>>> outputJar).toString());
>>> 94:         for (String c : classes) {
>>> 95:             Collections.addAll(args, "-C", testClassPath, c);
>> 
>> I believe only one single `-C` option is good enough for this case since the 
>> classes are all in one single directory.
>
> Contrary to the man which says "-C DIR Changes the specified directory and 
> includes the files specified at the end of the command line.", here is how it 
> works:
> 
> 
> bash-3.2$ find .
> .
> ./dir
> ./dir/B.class
> ./dir/A.class
> bash-3.2$ jar cvf a.jar -C dir A.class B.class
> B.class : no such file or directory
> added manifest
> adding: A.class(in = 176) (out= 149)(deflated 15%)
> 
> 
> and no jar is produced. Lines 614 and 647 of 
> src/jdk.jartool/share/classes/sun/tools/jar/Main.java explain why. IIRC the 
> intent was to mimic tar -C behaviour where -C applies to all files that 
> follow, but jar does not work that way currently. 
> 
> It's probably worth reaching consensus that it's a problem worth fixing first 
> (a scary one to fix by the way, provided how many tools could rely on the 
> current behaviour). Alternatively, man could be adjusted to reflect the 
> current order. I could work on that as a follow up.

You are probably right.  I have no more comment.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3976

Reply via email to