Генерация 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 или около того).

Другие вопросы по тегам