-
Bug
-
Resolution: Fixed
-
P3
-
9
-
b144
-
Verified
Given the following structure:
$ find apa
apa
apa/lib
apa/lib/baz
apa/lib/foo
apa/lib/foo/bar
apa/classes/module-info.class
Where baz is a symlink to foo:
$ ls -l apa/lib
total 8
lrwxr-xr-x 1 erik staff 3 19 Sep 16:30 baz -> foo
drwxr-xr-x 3 erik staff 102 19 Sep 16:26 foo
Running jmod like this fails:
jmod create --class-path apa/classes --libs apa/lib apa.jmod
Error: Is a directory
java.io.IOException: Is a directory
at sun.nio.ch.FileDispatcherImpl.read0(java.base/Native Method)
at sun.nio.ch.FileDispatcherImpl.read(java.base/FileDispatcherImpl.java:42)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(java.base/IOUtil.java:223)
at sun.nio.ch.IOUtil.read(java.base/IOUtil.java:197)
at sun.nio.ch.FileChannelImpl.read(java.base/FileChannelImpl.java:165)
at sun.nio.ch.ChannelInputStream.read(java.base/ChannelInputStream.java:65)
at sun.nio.ch.ChannelInputStream.read(java.base/ChannelInputStream.java:109)
at sun.nio.ch.ChannelInputStream.read(java.base/ChannelInputStream.java:103)
at java.io.InputStream.transferTo(java.base/InputStream.java:523)
at jdk.tools.jmod.JmodTask$JmodFileWriter.writeZipEntry(jdk.jlink/JmodTask.java:705)
at jdk.tools.jmod.JmodTask$JmodFileWriter$3.visitFile(jdk.jlink/JmodTask.java:676)
at jdk.tools.jmod.JmodTask$JmodFileWriter$3.visitFile(jdk.jlink/JmodTask.java:663)
at java.nio.file.Files.walkFileTree(java.base/Files.java:2695)
at java.nio.file.Files.walkFileTree(java.base/Files.java:2767)
at jdk.tools.jmod.JmodTask$JmodFileWriter.processSection(jdk.jlink/JmodTask.java:663)
at jdk.tools.jmod.JmodTask$JmodFileWriter.processSection(jdk.jlink/JmodTask.java:655)
at jdk.tools.jmod.JmodTask$JmodFileWriter.write(jdk.jlink/JmodTask.java:396)
at jdk.tools.jmod.JmodTask.create(jdk.jlink/JmodTask.java:352)
at jdk.tools.jmod.JmodTask.run(jdk.jlink/JmodTask.java:200)
at jdk.tools.jmod.Main.main(jdk.jlink/Main.java:33)
I have verified that it fails on the file apa/lib/baz specifically. For my repro, I just took module-info.class from java.base.
$ find apa
apa
apa/lib
apa/lib/baz
apa/lib/foo
apa/lib/foo/bar
apa/classes/module-info.class
Where baz is a symlink to foo:
$ ls -l apa/lib
total 8
lrwxr-xr-x 1 erik staff 3 19 Sep 16:30 baz -> foo
drwxr-xr-x 3 erik staff 102 19 Sep 16:26 foo
Running jmod like this fails:
jmod create --class-path apa/classes --libs apa/lib apa.jmod
Error: Is a directory
java.io.IOException: Is a directory
at sun.nio.ch.FileDispatcherImpl.read0(java.base/Native Method)
at sun.nio.ch.FileDispatcherImpl.read(java.base/FileDispatcherImpl.java:42)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(java.base/IOUtil.java:223)
at sun.nio.ch.IOUtil.read(java.base/IOUtil.java:197)
at sun.nio.ch.FileChannelImpl.read(java.base/FileChannelImpl.java:165)
at sun.nio.ch.ChannelInputStream.read(java.base/ChannelInputStream.java:65)
at sun.nio.ch.ChannelInputStream.read(java.base/ChannelInputStream.java:109)
at sun.nio.ch.ChannelInputStream.read(java.base/ChannelInputStream.java:103)
at java.io.InputStream.transferTo(java.base/InputStream.java:523)
at jdk.tools.jmod.JmodTask$JmodFileWriter.writeZipEntry(jdk.jlink/JmodTask.java:705)
at jdk.tools.jmod.JmodTask$JmodFileWriter$3.visitFile(jdk.jlink/JmodTask.java:676)
at jdk.tools.jmod.JmodTask$JmodFileWriter$3.visitFile(jdk.jlink/JmodTask.java:663)
at java.nio.file.Files.walkFileTree(java.base/Files.java:2695)
at java.nio.file.Files.walkFileTree(java.base/Files.java:2767)
at jdk.tools.jmod.JmodTask$JmodFileWriter.processSection(jdk.jlink/JmodTask.java:663)
at jdk.tools.jmod.JmodTask$JmodFileWriter.processSection(jdk.jlink/JmodTask.java:655)
at jdk.tools.jmod.JmodTask$JmodFileWriter.write(jdk.jlink/JmodTask.java:396)
at jdk.tools.jmod.JmodTask.create(jdk.jlink/JmodTask.java:352)
at jdk.tools.jmod.JmodTask.run(jdk.jlink/JmodTask.java:200)
at jdk.tools.jmod.Main.main(jdk.jlink/Main.java:33)
I have verified that it fails on the file apa/lib/baz specifically. For my repro, I just took module-info.class from java.base.
- relates to
-
JDK-8267583 jmod fails on symlink to class file
-
- Resolved
-