code: public static ObjectInputStream gullibleObjectInputStream(InputStream is) throws IOException {
  		return new ObjectInputStream(is) {
  			@Override
  			protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {
  				ObjectStreamClass oc = super.readClassDescriptor();
  				try {
  					Class<?> c = Class.forName(oc.getName());
  					// interfaces do not have fields
  					if (!c.isInterface()) {
  						Field f = oc.getClass().getDeclaredField("suid");
  						f.setAccessible(true);
  						f.set(oc, ObjectStreamClass.lookup(c).getSerialVersionUID());
  					}
  				} catch (Exception e) {
  					System.err.println("Couldn't fake class descriptor for "+oc+": "+ e);
  				}
  				return oc;
  			}
  		};
  	}
docs: ObjectInputStream which doesn't care too much about serialVersionUIDs. Horrible :)