Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как динамически выполнить строку кода ? 
:(
    Опции темы
KostenkoSergey
Дата 5.12.2005, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



Есть строка - фрагмент кода - например
String s1 = "5==3";
или
String s2 = "System.out.println("hello")'"

Возможно ли выполнить её динамически, в процессе работы программы ?
(дебагеры ж это вродь умеют) Как ? smile smile smile
PM ICQ   Вверх
batigoal
Дата 5.12.2005, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Вот тут есть статейка: Dynamic Code Generation
Добавлено @ 10:57
Кстати, скомпилировать класс, по-моему, можно не только запуском процесса компилятора, но и с помощью класса java.lang.Compiler.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
chief39
Дата 5.12.2005, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(KostenkoSergey @ 5.12.2005, 10:22)
(дебагеры ж это вродь умеют)

Дебаггеры, кажись, вставляют свои пять копеек в каждой строчке... и компилят...
Вроде уже обсуждали такое.. не могу найтить....

Всё равно компилить надо эту строку перед выполнением... можешь динамически создавать файл куда набиваешь свой стандартный класс со статик функцией... а в серединку можешь пихать то, что тебе надо выполнить. записал всё в файл - вызвал компилер, запустил сей класс на выполнение
smile

Вопчем подумать надо.....



УПС.... не успел поперед Джорджа smile вроде и добавить нечего smile)

Это сообщение отредактировал(а) chief39 - 5.12.2005, 11:06


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
tux
Дата 5.12.2005, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



Проще будет использовать BeanShell.
PM MAIL Skype GTalk Jabber YIM   Вверх
KostenkoSergey
Дата 5.12.2005, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



Цитата(Lamer @ 5.12.2005, 10:54)
Вот тут есть статейка: Dynamic Code Generation


статейка кажись для SE6 smile


Цитата(tux @ 5.12.2005, 11:09)
Проще будет использовать BeanShell.

cсенки - ща бу смотреть (если есть примерчик скинь сюда, плз)
PM ICQ   Вверх
tux
Дата 5.12.2005, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 31
Всего: 132



HelloWorld будет выглядеть совсем элементарно.
Код

import bsh.Interpreter;

Interpreter i=new Interpreter();
i.eval("System.out.println(\"Hello, world!\")");

Интерпретатору можно задавать имена переменных со значением и получать обратно значения вычисленных переменных. Например, так
Код

Interpreter i=new Interpreter();
i.set("k", 3);
i.set("m", 5);
i.eval("s = k+m");
System.out.println(i.get("s"));

В метод eval кроме строки можно передавать объект java.io.Reader, то есть исполнять можно, например, скрипт из файла.
Пока все smile
Учитывай только что это не совсем полноценная Java, а скорее Java-подобный язык, в котором, тем не менее, доступны любые библиотеки.

Это сообщение отредактировал(а) tux - 5.12.2005, 11:54
PM MAIL Skype GTalk Jabber YIM   Вверх
KostenkoSergey
Дата 5.12.2005, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



smile супер - мне должно подойти!
Спасибо!
smile
PM ICQ   Вверх
chief39
Дата 5.12.2005, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



tux, Огромное спасибо!
От меня и от KostenkoSergey - плюс в благодарность smile


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0809 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.