Работая над одним проектом, наткнулся на интересное поведение ObjectInputStream jvm от Sun/Oracle.
Надеюсь все знают что в джава классы загружаются при помощи ClassLoader`а, специального класса такого. При запуске приложения и, соответственно, потока к нему (потоку) прикрепляется его ClassLoader, который можно получить/изменить при помощи Thread.currentThread().set/getContextClassLoader. Если хотите можно конечно использовать свой ClassLoader либо напрямую вызывая loadClass, далее получая объект загруженного класса и вызывая его методы либо Thread.currentThread().setContextClassLoader(myClassLoader).
Это вроде как работает, но оказывается есть ситуации когда нельзя понять какой ClassLoader будет использоваться.