RFR: 8345506: jar --validate may lead to java.nio.file.FileAlreadyExistsException [v2]

Jaikiran Pai jpai at openjdk.org
Tue Dec 17 04:08:39 UTC 2024


On Fri, 13 Dec 2024 13:41:52 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

>> src/jdk.jartool/share/classes/sun/tools/jar/Main.java line 435:
>> 
>>> 433:                     file = createTemporaryFile("tmpJar", ".jar");
>>> 434:                     try (InputStream in = new FileInputStream(FileDescriptor.in)) {
>>> 435:                         Files.copy(in, file.toPath());
>> 
>> Did you try adding the REPLACE_EXISTING option to Files.copy, I assume that will fix it.
>
> Hello Alan, I had thought about that, but then I looked at the implementation of `Files.copy(...)` with `REPLACE_EXISTING`. If that option is specified, the `Files.copy(...)` implementation first deletes the existing file:
> 
> // attempt to delete an existing file
> if (replaceExisting) {
>     deleteIfExists(target);
> }
> 
> before it initiates the copying. It didn't feel right to be explicitly creating a file (before the call to Files.copy) and then having it deleted due to the use of  `REPLACE_EXISTING`. So I went ahead with this alternate approach.
> 
> Would you still prefer that we use `REPLACE_EXISTING` here?

Thank you Lance for the review. Alan, is it OK to proceed with this current change or do you think we should pursue the `REPLACE_EXISTING` option here?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/22734#discussion_r1887865656


More information about the core-libs-dev mailing list