| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > трансляция классов |
| Автор: sabvi 1.3.2004, 12:56 |
Программа генерирует и записывает в файл код класса. Например в файл: MyClass.java Как можно выполнить трансляцию этого класса (программно) и создать экземпляр класса в этой же программе. т.е.: MyClass myClass = new MyClass(); |
| Автор: DarkDS 1.3.2004, 13:48 |
| Кросспост: Если пытаться генерить исходный код (файл с расширением ява) то тут одно из 2-х. Либо через шелл запускать компилятор, а потом подгружать через рефлексию полученный файл, либо писать свой компилятор и писать в файл уже скопилированный класс. ЗЫ. Вообще то не желательно создавать дублирующиеся темы... |
| Автор: OlegsDP 1.3.2004, 16:53 |
| Самомодифицирующийся код - самый надежный способ сделать программу неотлаживаемой. |
| Автор: DarkDS 1.3.2004, 20:11 |
| Кстати... А зачем тебе это? Может ты велосипед изобретаешь? |
| Автор: AntonSaburov 2.3.2004, 11:08 | ||||||||
| В принципе такое возможно. Как-то мне попалась статья от SUN. Постараюсь ее сократить Итак, начнем с кода примера. Сама форма предназначена только для ввода данных, поэтому конструктор и метод main представляет мало интереса (если Вы конечно не совсем новичок в SWING). Самое интересное находится в методе doCompile в самом низу программы.
После того как текст набран, его надо скомпилировать. Заметьте, что добавлена дополнительная библиотека tools.jar. Она лежит в SDK - поищите. Т.к. у меня установлена переменная окружения JAVA_HOME, то я ей и воспользовался.
Если все скомпилировалось, то можно запустить наше приложение.
ВАЖНО - запускайте именно через java, а не javaw - нам понадобится наблюдать за окном, где запущена сама java. Перед вами обычная форма у которой верхнее поле ввода для имени класса, второе поле - для тела (программы). Введите в верхнее поле Sample а в нижнее поле
и нажмите кнопку Go. И можно будет увидеть с окне, где запущена java сегодняшнюю дату. Дело сделано. |