Создание класса Dynami c во время выполнения в JVM - PullRequest
2 голосов
/ 16 марта 2020

Мне нужно взять данные во время выполнения, создать новый класс и загрузить их в JVM для запуска.

Хотя это может быстро стать абстрактным вопросом с минимальными конкретными ответами и поэтому помечаться как «Не подходит для stackoverflow», я действительно ищу некоторые конкретные ответы на этот вопрос.

Я прочитал множество ресурсов по этому поводу. Ответы, которые я раскрыл, варьируются от манипулирования байтовым кодом (даже не уверен, как я начну это делать) до рекурсивной загрузки всех классов в JVM, что на самом деле не представляется возможным, потому что кажется, что это приведет к бесконечному l oop Тип сценария.

В настоящее время я пишу файл .java динамически, а затем получаю ссылку на системный компилятор и использую его для компиляции в файл класса. Затем я использую метод defineClass() в классе ClassLoader для попытки загрузить его в JVM.

После выполнения этих шагов я получаю NoClassDefError, который имеет смысл, мне просто нужно немного информации о том, как правильно загрузить этот новый, динамически написанный класс, загруженный в JVM?

В ответ на обеспокоенность, вызванную чьим-то комментарием, это 100% экспериментирование и только для целей обучения. Это не то, что могло бы быть запущено в производство.

...