./jar cf xx.jar a b
a : no such file or directory
b : no such file or directory
./jar tf xx.jar
java.nio.file.NoSuchFileException: xx.jar
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
at java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:171)
at java.base/sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99)
at java.base/java.nio.file.Files.readAttributes(Files.java:1853)
at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1282)
at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:716)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:243)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:172)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:143)
at jdk.jartool/sun.tools.jar.Main.list(Main.java:1521)
at jdk.jartool/sun.tools.jar.Main.run(Main.java:361)
at jdk.jartool/sun.tools.jar.Main.main(Main.java:1702)
They should be consistent. Another reasonable way is to prompt the question instead of throwing an exception roughly.
a : no such file or directory
b : no such file or directory
./jar tf xx.jar
java.nio.file.NoSuchFileException: xx.jar
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55)
at java.base/sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:171)
at java.base/sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99)
at java.base/java.nio.file.Files.readAttributes(Files.java:1853)
at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1282)
at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:716)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:243)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:172)
at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:143)
at jdk.jartool/sun.tools.jar.Main.list(Main.java:1521)
at jdk.jartool/sun.tools.jar.Main.run(Main.java:361)
at jdk.jartool/sun.tools.jar.Main.main(Main.java:1702)
They should be consistent. Another reasonable way is to prompt the question instead of throwing an exception roughly.