Как подгрузить новый .class в программу в runtime?
Я с клавиатуры ввожу код для метода. обновленный .java компилируется программой в .class Как полученный .class подгрузить в программу в runtime?
Ответы (1 шт):
Вариант 1. На диске в каталоге создать структуру каталогов-пакетов, создать там class-файл. Каталог подать в java.net.URLClassLoader как URL (File.toURI.toURL либо Path.toUri.toURL).
Вариант 2. Использовать хранение class-файла в памяти как массив байт, реализовав свой ClassLoader, где в переопределенном методе findClass по нужному имени вызывать super.defineClass(name, bytes, 0, bytes.length, this.getClass().getProtectionDomain) и возвращать результат. Для других имен кидать throw new ClassNotFoundException(name)
А уже с имеющимся ClassLoader работать через reflection. Например, при помощи Class.forName(name, true, classLoader)