Я разрешаю пользователю импортировать плагинообразные классы из удаленного местоположения с помощью URLClassLoader, поэтому эти импортированные классы НЕ существуют в пути сборки (однако все они реализуют интерфейс IPlugin , который включен ).
Я предположил, что можно просто использовать ObjectOutputStream, чтобы сохранить все загруженные плагины в файл, а затем прочитать их с помощью ObjectInputStream. Однако, похоже, это не так, поскольку все, что он сохраняет, - это состояние объекта, а не содержащая его логика (то есть методы).
Я надеюсь сохранить список загруженных плагинов (activePlugins) с ObjectOutputStream:
ObjectOutputStream oos = new ObjectOutputStream(*fileoutputstream*);
oos.writeObject(activePlugins);
oos.close();
Затем в другой среде выполнения загрузите / восстановите все эти плагины с помощью ObjectInputStream:
ObjectInputStream ois = new ObjectInputStream(*fileinputstream*);
activePlugins = (ArrayList<IPlugin>) ois.readObject();
Но поскольку действительные классы объектов недоступны в пути сборки (они находятся где-то еще на жестком диске), он становится бесполезным. Мне нужен какой-то способ загрузки объектов без наличия классов, то есть загрузка объектов с состояниями и без зависимостей.