![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
т.е., насколько вы уже поняли, мне необходимо скомпилировать некий .java файл. Полный путь до компилятора, в виде c:/jdk/bin/javac.exe лежит в переменной compiler, флаги компиляции в flags и полный путь до сурца (в том же виде) в source. Все переменные существуют и не равны null. При этом метод возвращает true, если компиляция прошла успешно, т.е. javac не выдал на консоль ничего. В случае исключительной ситуации или ошибки в исходнике возвращается false. А ещё необходима мультиплатформенность. В зависимости от системы уже прибавляется .exe, но мне кажется, что могут быть заморочки с \\ и /. Я использую /. Проблема заключается в том, что ничего не компилируется. P.S. На TODO внимания не обращайте. Заранее спасибо. Пойду поем. -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
У меня все работает в таком виде. Slackware Linux 10.1, JDK 1.4.2_08. Даже не представляю в чем может быть проблема, хотя в Windows не проверял, может быть там не все так гладко. Альтернативный способ откомпилить классы:
Класс com.sun.tools.javac.Main находится в jdk.home/lib/tools.jar. |
|||
|
||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
tux, спасибо, если с тем ничего не выйдет, попробую. Мне, просто, ещё и другие компиляторы других языков поддерживать нужно будет (C#, C, etc.).
-------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
-------------------- |
||||
|
|||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Опаньки, спасибки. -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| simanyay |
|
||||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
В связи с тем, что вот такой код
работает, смею предположить, что не работает
Ни у кого никаких мыслей нет? -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
||||
|
|||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
После курсов вождения я смело запускаю все программы, кроме Sunовских. Почему-то и javac, java и другие запускаются (т.е. процесс в памяти висит) и... не останавливаются. Так и остаются висеть
-------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Может, переставить СДК?
Попробуй примеры отсюда http://java.sun.com/developer/JDCTechTips/2003/tt0304.html - будут работать? -------------------- |
||||
|
|||||
| simanyay |
|
||||||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Так с консольки (cmd) они работают.
После того, как я поменял ls на cmd /c заработали. Но когда я попытался javac запустить через cmd /c:
Добавлено @ 19:37 (поговорив по телефону) Кстати, насколько я помню, error=2 это когда не найдена программа -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
||||||
|
|||||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Это в винде означает File Not Found Error, то есть javacу ты не дал никакого файла компилить Т. е. это означает что все работает. Можно проще
-------------------- |
||||
|
|||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Сделал.
Короче, поговорив сначала с Котом в аське, а потом с котом васькой я решил взглянуть на эту проблему по другому. Опишу (вдруг кому ещё такая фигня попадется): Моей целью было написать класс, который компилировал бы представляемые .java файлы. Так как в разных системах javac располагается в разных местах, сл-но я хотел прописывать полный путь, который хранился бы в конфиге. Но тут возникла проблема, которую я так и не смог решить. Почему-то .exec(...) упорно отказывается запускать такого вида строку: cmd /c c:\\Program Files\\Java\\jdk1.5.0\\bin\\javac.exe e:\\dev\\java\\jizer-data\\java_src\\Hello.java Причём я пробовал и в кавычки брать - всё равно не работал. Ошибка была интересная 'C:\Program' is not recognized as an internal or external command, operable program or batch file. Кстати, попробуйте запустить эту строку (с кавычками и без) в start > run. Тоже не получится. (Hint: чтобы видеть результы надо поменять флаг /c на /k) Но если я запускал не через полный путь, т.е. просто javac ..., то всё работало. Сл-но я решил, что просто буду динамически управлять переменной окружения PATH. Всем спасибо за помощь, а Коту + в репу -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| simanyay |
|
||||||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Нашёл альтернативный способ запуска программ из Java.
Предисловие: В стандартном способе запуска программ, есть проблема, которая в официальной документации описывается так:
Что в переводе означает
Решение нашёл на JavaWorld (When Runtime.exec() won't) и немного переписал класс под себя. В зависимости от ситуации, удобно пользоваться и тем и другим, поскольку в большей части они похожи:
Засим моя проблема запуска компилятора решена полностью. Благодарю за внимание. P.S. Думаю, неплохо было бы это как дополнение к статье Антона Сабурова про вызов внешних программ, которая в ФАКе, добавить. -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
||||||
|
|||||||
![]()
|
| Правила форума "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. |