![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| sabvi |
|
|||
|
Unregistered |
Программа генерирует и записывает в файл код класса. Например в файл: MyClass.java Как можно выполнить трансляцию этого класса (программно) и создать экземпляр класса в этой же программе. т.е.: MyClass myClass = new MyClass(); |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Кросспост:
Если пытаться генерить исходный код (файл с расширением ява) то тут одно из 2-х. Либо через шелл запускать компилятор, а потом подгружать через рефлексию полученный файл, либо писать свой компилятор и писать в файл уже скопилированный класс. ЗЫ. Вообще то не желательно создавать дублирующиеся темы... |
|||
|
||||
| OlegsDP |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 25.2.2004 Репутация: нет Всего: 1 |
Самомодифицирующийся код - самый надежный способ сделать программу неотлаживаемой.
|
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Кстати... А зачем тебе это? Может ты велосипед изобретаешь?
|
|||
|
||||
| AntonSaburov |
|
||||||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
В принципе такое возможно.
Как-то мне попалась статья от SUN. Постараюсь ее сократить Итак, начнем с кода примера. Сама форма предназначена только для ввода данных, поэтому конструктор и метод main представляет мало интереса (если Вы конечно не совсем новичок в SWING). Самое интересное находится в методе doCompile в самом низу программы.
После того как текст набран, его надо скомпилировать. Заметьте, что добавлена дополнительная библиотека tools.jar. Она лежит в SDK - поищите. Т.к. у меня установлена переменная окружения JAVA_HOME, то я ей и воспользовался.
Если все скомпилировалось, то можно запустить наше приложение.
ВАЖНО - запускайте именно через java, а не javaw - нам понадобится наблюдать за окном, где запущена сама java. Перед вами обычная форма у которой верхнее поле ввода для имени класса, второе поле - для тела (программы). Введите в верхнее поле Sample а в нижнее поле
и нажмите кнопку Go. И можно будет увидеть с окне, где запущена java сегодняшнюю дату. Дело сделано. |
||||||||
|
|||||||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |