Генерация Java-байт-кода с использованием JCodeModel
Я создал JCodeModel, который содержит все классы, которые я хочу генерировать. Дело в том, что я хочу сгенерировать байт-код (файлы.class) и jar, но не исходники. Есть ли элегантный способ сделать это без генерации файлов.java и последующей компиляции их в файлы.class и jar?
1 ответ
Вы можете рассмотреть один из нескольких генераторов Java-байт-кода: Любое руководство по созданию байт-кода Java?
Но если вы предпочитаете иметь дело с JCodeModel lib, у вас есть возможность сохранить промежуточный Java-код в памяти как временную стадию. Вот последовательность подсказок:
(1) Вот пример того, как получить исходный текст Java в памяти: Компилировать динамически сгенерированный класс во время выполнения без записи в файл
(2) Затем вы можете использовать аналогичную вещь, чтобы снова сохранить скомпилированный байт-код в памяти: https://github.com/trung/InMemoryJavaCompiler/blob/master/src/main/java/org/mdkt/compiler/InMemoryJavaCompiler.java
(3) Наконец, чтобы создать jar-файл из байтового кода, хранящегося в памяти, просто сделайте что-то похожее на: Как использовать JarOutputStream для создания JAR-файла?
PS: последний этап может быть выполнен в виде потоковой записи непосредственно в базу данных (поле BLOB или около того).