I think I know where the issue is: In "InstantiationUtil", can you change the method
public static Object deserializeObject(byte[] bytes, ClassLoader cl) throws IOException, ClassNotFoundException { ObjectInputStream oois = null; try { oois = new ClassLoaderObjectInputStream(new ByteArrayInputStream(bytes), cl); return oois.readObject(); } finally { if (oois != null) { oois.close(); } } } to something like public static Object deserializeObject(byte[] bytes, ClassLoader cl) throws IOException, ClassNotFoundException { ObjectInputStream oois = null; final ClassLoader old = Thread.currentThread().getContextClassLoader(); try { oois = new ClassLoaderObjectInputStream(new ByteArrayInputStream(bytes), cl); return oois.readObject(); } finally { Thread.currentThread().setContextClassLoader(old); if (oois != null) { oois.close(); } } }