ClassNotFound Exception при попытке десериализации класса, созданного с помощью JavaAssist
У меня есть приложение, которое работает на Tomcat/Jboss на распределенных серверах. Приложение запускается на Spark master/slave.
Я использую JavaAssist для создания динамического класса. Мне нужно сначала сериализовать это, затем десериализовать, а затем получить доступ к методам этого класса в другом классе в другом пакете (OtherClass.java).
ClassPool pool = ClassPool.getDefault();
CtClass cc = pool.makeClass(className);
cc.setInterfaces(new CtClass[]{pool.get("java.io.Serializable")});
ClassLoader classLoader = OtherClass.class.getClassLoader();
pool.appendClassPath(new LoaderClassPath(classLoader));
//<<code to add methods to this class>>
return cc.toClass()
Поскольку это приложение работает на распределенном сервере, я сериализовал класс, возвращаемыйcc.toClass()
.
Когда я запускаю это на сервере приложений, при попытке десериализации я получаю исключение ClassNotFound.
Похоже, classLoader не может найти класс, созданный cc.toClass() во время десериализации.
Какое изменение мне нужно сделать, чтобы classLoader нашел класс, созданный javaAssist (cc.toClass())?