Мне нужно взять данные во время выполнения, создать новый класс и загрузить их в JVM для запуска.
Хотя это может быстро стать абстрактным вопросом с минимальными конкретными ответами и поэтому помечаться как «Не подходит для stackoverflow», я действительно ищу некоторые конкретные ответы на этот вопрос.
Я прочитал множество ресурсов по этому поводу. Ответы, которые я раскрыл, варьируются от манипулирования байтовым кодом (даже не уверен, как я начну это делать) до рекурсивной загрузки всех классов в JVM, что на самом деле не представляется возможным, потому что кажется, что это приведет к бесконечному l oop Тип сценария.
В настоящее время я пишу файл .java
динамически, а затем получаю ссылку на системный компилятор и использую его для компиляции в файл класса. Затем я использую метод defineClass()
в классе ClassLoader
для попытки загрузить его в JVM.
После выполнения этих шагов я получаю NoClassDefError
, который имеет смысл, мне просто нужно немного информации о том, как правильно загрузить этот новый, динамически написанный класс, загруженный в JVM?
В ответ на обеспокоенность, вызванную чьим-то комментарием, это 100% экспериментирование и только для целей обучения. Это не то, что могло бы быть запущено в производство.