![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Ratman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.8.2007 Где: Минск Репутация: нет Всего: нет |
Имеется нужда компилировать формулы прямо в рантайме. Побегал по форуму и нашол 2 варианта
1 - com.sun.tools.javac.Main.compile 2 - javax.util.JavaCompiler Про первый вычитал только что он устаревший, ненадежный, недокументированый и еще и меняется в каждой новой йдке ![]() Про второй нинашол ничего кроме суновского javadoc'a. Но несмотря на то, что все там написаное я могу пересказать на русском (с англиским у мну хорошо, с головой плохо ![]() ![]() Выкиньте пожалуйста пример кода который: 1 - компилирует класс из файла ForCompile.class 2 - все сообщения компилятора выводит в ЛЮБОЙ не-стандартный-консоль потов вывода. 2 - запускает метод someFunc() описанный в этом классе. |
|||
|
||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
||||
|
||||
y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
а версию JDK сменить не пробовал? В 6 версии с компиляцией теперь богато и документаровано.
Вот, к примеру ксассег http://java.sun.com/javase/6/docs/api/java...g/Compiler.html Вот еще, может пригодится: Механизм Java Extension http://java.sun.com/javase/6/docs/technote...ions/index.html Скриптинг для Java http://java.sun.com/javase/6/docs/technote...ting/index.html -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
hfnvfy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 25.8.2007 Репутация: нет Всего: нет |
Добавлено @ 22:00
начитался явадока ничего не выходит
в чем я ниправ? Это сообщение отредактировал(а) hfnvfy - 8.9.2007, 22:01 |
|||
|
||||
hfnvfy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 25.8.2007 Репутация: нет Всего: нет |
ладно, поставим вопрос по другому:
Если кто-нибудь имеет хоть какой-нибудь обрывок кода, в котором реализована ран-тайм компиляция, выложите пожалуйста. Буду благодарен ![]() |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
||||
|
||||
Ratman |
|
||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.8.2007 Где: Минск Репутация: нет Всего: нет |
Ура, разобрался. Всем спасибо за помощь. Если вдруг кому понадобиться - выкладываю код:
допустим надо откомпилировать следующий класс
записываем этот текст в файл TestClass.java в текущем каталоге
вся эта байда в данном случае предназначена чисто для "разобраться". Тут файл с кодам предварительно создан вручную, используется стандартный файловый менеджер, стандартный поток вывода для сообщений компилятора. Это сообщение отредактировал(а) Ratman - 12.9.2007, 15:55 |
||||
|
|||||
YuG |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 20.2.2006 Репутация: нет Всего: 4 |
2Ratman,
А где лежат javax.tools.* классы? |
|||
|
||||
Ratman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.8.2007 Где: Минск Репутация: нет Всего: нет |
пакет включён в jdk SE 1.6 и, естесвенно все более поздние версии.
...\jdk\jre\lib\rt.jar\javax\tools |
|||
|
||||
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: 1 Всего: 6 |
А у меня ToolProvider.getSystemJavaCompiler(); возвращает null. В чём дело?
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: 1 Всего: 6 |
А я понял почему не работает - потому что у меня jre, а в ней нет компилятора. Работать будет только в jdk!!!
Вопрос: а можно сделать чтобы работало и в jre тоже? Например компилятор полностью написаный на java, что-то типа:
Это сообщение отредактировал(а) pompei - 13.9.2007, 13:23 --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
Metal_Heart |
|
|||
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
А смысл где? Ты хочешь компилить, но не хочешь иметь компилятор? -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
Ratman |
|
||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.8.2007 Где: Минск Репутация: нет Всего: нет |
Плохо, и странно. пакет javax.tools лежит именно в jre, то есть если у тебя установлена ява-машина (ты можешь запускать .class файлы) вся эта байда должна у тебя работать... ЗЫ: откомпилировать классы Test и SomeLoader ты, конечно, не сможешь. Вот они откомпилированные в архиве... Закинь это все на С: (или куда там у тя класспас ведет), и попробуй запустить. Добавлено через 6 минут и 59 секунд
могу придумать только 1 вариант: у тебя не установлена ява машина Если она есть, то в неё по умолчанию встроен компилятор, он и запускается одновременно с запуском машины. Ссылку на него и выдает ToolProvider.getSystemJavaCompiler(); ЗЫ: поправляйте меня, если я ошибаюсь. Слишком много всего перечитал за ограниченное время - могу и напутать Это сообщение отредактировал(а) Ratman - 13.9.2007, 21:47 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
||||
|
|||||
Ratman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 18.8.2007 Где: Минск Репутация: нет Всего: нет |
Продолжаем наш концерт по заявкам..
Имеем кусок кода
Цикл бесконечный - мы пишем в консоль: "This is a first Line" он пишет в консоль : This is a first line Мы пишем дальше: "This is our second line" а он выводит: This is a first line Зараза без проблем пересоздает файл .java уже с новым содержимым, успешно компилирует новый файл, но загружает класс из самого первого. В результате, чтобы вывести другую строку - надо перезапускать программу. Я никак не могу понять, почему свеже скомпиллированный класс не заменяет старый, а просто исчезает! |
|||
|
||||
Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |