Как загрузить класс из его исходного кода, используя Javassist? - PullRequest
0 голосов
/ 02 ноября 2011

У меня во входном потоке полный исходный код класса.Можно ли использовать Javassist для создания нового CtClass объекта для этого класса?.

Я знаю, что с именем класса возможно создать новый CtClass объект с чем-то вроде:

ClassPool.getDefault().makeClass("name_of_the_new_class");

Но в моем случае я заранее не знаю имя класса, а только его полный исходный код (конечно, я могу получить имя класса, анализирующего исходный код, но, пожалуйста, не говоритемне, что это часть решения :-))

1 Ответ

2 голосов
/ 03 ноября 2011

Если вы хотите скомпилировать исходный файл на лету, взгляните на API инструментов, а также ToolProvider.getSystemJavaCompiler () .Оттуда вы можете скомпилировать файлы .class из исходного кода и загрузить их, используя загрузчик классов, если вам нужно.

Вы также можете использовать Javassist для создания CtClass из байтов созданного файла класса, используя ByteArrayClassPath с новым ClassPool.

...