getJarLocation now returns null instead of user home when not run from a
jar.
better exception handling for deserialization