Isn't this behavior different from the native ENOENT case?  When the file doesn't exist:

In FSAccessJava you are returning an apparently valid LStat with the mode REGULAR_FILE, but -1 for lastModified and file length.

In FSAccessNative I think you are throwing NoSuchFileException.

The Java code needs to trap that, doesn't it?

  long sz = file.length();
  if (sz < 0)
    throw new NoSuchFileExeption(file);

  return new LStat(file.lastModified(), mode, sz);