![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Вопрос очевиден из названия теммы.
Нужна утилита(технология), не знаю как правильно назвать, которая компилирует Java-код в Java-байт-код "НА ЛЕТУ". Нашел менее более подходяший инструмент http://docs.codehaus.org/display/JANINO/Home Еще похожую фишку предлагает javax.tools но tools.jar оч большой по размеру и там сидит много фишек которые используются оч редко Сейчас данную задачу делает "Bean Shell"! Как сказало начальство - он медленный - ищи альтернативу. ![]() Кто сталкивался с похожей задачей? Подскажите альтернативы, ресурсы где можно почитать на эту тему... Даже не знаю как правильно подать запрос в гугле на эту тему. Буду рад любым соображениям, предложениям, замечаниям, мыслям на эту тему! Спасибо! |
|||
|
||||
dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 11 Всего: 16 |
Class.forName("com.sun.tools.javac.Main", false, classloader);
потом вызывай функцию main(String []args) через рефлекцию. |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
|
|||
|
||||
dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 11 Всего: 16 |
Есть ещё java-assist (now a jboss project), eclipse compiler. Эти альтернативы, на мой взгляд, проигрывают использованию родного компилятора из JDK. Он в tools.jar , но другие компиляторы тоже в jarиках. А этот уже на машине, и, возможно уже загружен другими библиотеками. Добавлено через 39 секунд Другая возможность, это генерация байткода. Это не так сложно как это звучит. |
|||
|
||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
dobrolub - спасибо большое. На счет tools.jar я писал что мне начальство сказало - большой в мегабайтах...
Добавлено через 19 секунд Остальные посмотрю.. |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
В JDK 6 появился стандартный класс JavaCompiler для доступа к компилятору.
Плюс посмотри ByteCode Libraries in Java. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Killer_13 |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
dobrolub
LSD
Это сообщение отредактировал(а) Killer_13 - 24.2.2012, 15:37 |
||||||||
|
|||||||||
Killer_13 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
только что поговорил с начальником, понимание для чего это нужно обретает четкий характер. ![]() Значит нужен инструмент для компиляции "на лету" классов у которых есть зависимости в .class-файлах зупещенного приложения! НЕ для компиляции кусочков кода, НЕ для зависимости компилируемых "на-лету" классов из какой то другой библиотеки. Буду копать в сторону Javassist потом Janino потом tools.jar(как самый последний вариант). Скажите пож Javassist может компилировать калссы "на лету"? спасибо! |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это публичный API к компилятору, а внутри он использует tools.jar. Просто использовать не публичный API при наличии публичного, не очень хорошо. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Killer_13 |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Тааакссс. пытаюсь состряпать рабочий пример для Javassist, и что-то себе слабо представляю как это слепить.
может, кто работал - подскажет? Значит для начала все елементарно. Есть
Потом есть еще 2 класа, Хочу сделать следующее. Клас "One" грузится JVM.
Клас "Two" грузится Javassist. При этом по ходу должен тянуть клас "One" из скомпилированных файлов .class
Я правильно понимаю сию арифметику? Как слепить не знаю.. Читал офф туториал, пока глухо, нужно наверное еще пару раз перечитать.. ![]() Буду благодарен за подсказки.. |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "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. |