| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Как динамически выполнить строку кода ? |
| Автор: KostenkoSergey 5.12.2005, 10:22 |
| Есть строка - фрагмент кода - например String s1 = "5==3"; или String s2 = "System.out.println("hello")'" Возможно ли выполнить её динамически, в процессе работы программы ? (дебагеры ж это вродь умеют) Как ? |
| Автор: batigoal 5.12.2005, 10:54 |
| Вот тут есть статейка: http://jdj.sys-con.com/read/36843.htm Добавлено @ 10:57 Кстати, скомпилировать класс, по-моему, можно не только запуском процесса компилятора, но и с помощью класса java.lang.Compiler. |
| Автор: chief39 5.12.2005, 11:04 | ||
Дебаггеры, кажись, вставляют свои пять копеек в каждой строчке... и компилят... Вроде уже обсуждали такое.. не могу найтить.... Всё равно компилить надо эту строку перед выполнением... можешь динамически создавать файл куда набиваешь свой стандартный класс со статик функцией... а в серединку можешь пихать то, что тебе надо выполнить. записал всё в файл - вызвал компилер, запустил сей класс на выполнение Вопчем подумать надо..... УПС.... не успел поперед Джорджа |
| Автор: tux 5.12.2005, 11:09 |
| Проще будет использовать http://www.beanshell.org/. |
| Автор: KostenkoSergey 5.12.2005, 11:32 | ||||
статейка кажись для SE6
cсенки - ща бу смотреть (если есть примерчик скинь сюда, плз) |
| Автор: tux 5.12.2005, 11:53 | ||||
HelloWorld будет выглядеть совсем элементарно.
Интерпретатору можно задавать имена переменных со значением и получать обратно значения вычисленных переменных. Например, так
В метод eval кроме строки можно передавать объект java.io.Reader, то есть исполнять можно, например, скрипт из файла. Пока все Учитывай только что это не совсем полноценная Java, а скорее Java-подобный язык, в котором, тем не менее, доступны любые библиотеки. |
| Автор: KostenkoSergey 5.12.2005, 12:08 |
| Спасибо! |
| Автор: chief39 5.12.2005, 12:17 |
| tux, Огромное спасибо! От меня и от KostenkoSergey - плюс в благодарность |