If you take a look at the source code for com.sun.tools.hat.internal.parser.Reader, you'll see that it's looking for the magic number 0x4a415641.
This value is used to help identify valid heap dump files. jmap
should append this value as the first four bytes of any heap dump file it creates.
I'd suggest opening up your heap dump in a hex editor and checking to see whether the first four bytes are 0x4a415641
. Check this for the file on both your Linux and Windows machine. Perhaps the file is getting corrupted when you transfer the file.