transferFrom(ReadableByteChannel,long,long) does not throw NonReadableChannelException if the target is a FileChannel that is not readable and the file size is 0. If the file size is > 0 then NonReadableChannelException is thrown as expected.
This is a regression in jdk7-b109 and arises because the updated implementation does not attempt to mmap the target file when it is 0 bytes. It causes the following JCK test to fail:
api/java_nio/channels/FileChannel/index.html#Methods[FileChannel0024]
This bug was originally reported via 6984182 along with other failures but these other failures do not appear to be JDK issues.