|
|
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
Такая у меня случилась сложность: запускаю через Runtime в cmd svn комманду, открывается cmd и висит, но вот статус он выдает как будто он уже завершился. Вопрос: как же дождаться его реального завершения и почему он так нагло врет? :( Решала с помощью потоков и простого ожидания процесса: Код: java 1. 2. 3. Результат одинаков: окошко висит, а мы уже вовсю пошли на дальнейшее выполнение... Буду благодарна идеям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 20:46:55 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
Потоки ввода-вывода надо вычитывать. Либо использовать ProcessBuilder+Java 7 с редиректом в System.out/System.in Откуда вы видите "статус он выдает как будто он уже завершился", если у вас всё висит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 22:19:10 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
Использую ProcessBuilder + waitFor - все ждет корректно, проблем пока не встречал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 02:09:04 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПотоки ввода-вывода надо вычитывать. Как всегда в точку. Было у меня такое, и именно с свн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 02:47:47 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
BlazkowiczОткуда вы видите "статус он выдает как будто он уже завершился", если у вас всё висит? у меня не все висит, а сам cmd, но метод, в котором он запускается, возвращает "успешное завершение" практически сразу же после запуска и выполнение идет дальше, а cmd-шник живет своей жизнью, в том то и проблема... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 12:23:57 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
забыл никBlazkowiczПотоки ввода-вывода надо вычитывать. Как всегда в точку. Было у меня такое, и именно с свн Как решили? Что с теми потоками дальше делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 12:24:47 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
Oksana PalunКак решили? Что с теми потоками дальше делать? Java 7 установлена? JavaDoc ProcessBuilder прочитан? Вот статья по теме. Актуальна, до Java 7. В Java 7 проблема та же, но решение проще. http://www.javaworld.com/jw-12-2000/jw-1229-traps.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 12:29:08 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
Ой, это же в JavaDoc класса Process, кажется. Можно и без билдера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 12:29:44 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
[quot Blazkowicz]Oksana PalunВот статья по теме. Актуальна, до Java 7. В Java 7 проблема та же, но решение проще. http://www.javaworld.com/jw-12-2000/jw-1229-traps.html ага, читала эту статью вчера, но чето решила, что это мне не поможет, а ларчик то просто открывался...:) Вроде как заработало, спасибо, добрые мОлодцы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2013, 12:53:13 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
Если открываете файл через cmd и при вычитывании потоков создаете InputStreamReader, не забудьте указать кодировку консоли. Код: java 1. А вот сообщения об ошибках WinApi CreateProcess приходят в кодировке cp1252: java.io.IOException: Cannot run program "НеСуществует.exe": CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë (SQL.ru исправил, но реально «Не удается найти указанный файл» будет кракозяблами) При чем в e.getMessage() имя файла может содержать русские буквы в правильной кодировке, а «Не удается найти указанный файл» быть в cp1252. Код: java 1. 2. 3. 4. 5. Как видно из стека, «Cannot run program "НеСуществует.exe"» добавляет ProcessBuilder, поэтому и кодировка правильная. А «CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë» приходит из java.lang.ProcessImpl.create(Native Method). Видимо, там cp1252 (ISO-8859-1) прибит гвоздями. Если кто знает, как это полечить, напишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 17:16:12 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
SQL.ru исправил К сожалению, в предварительном просмотре символы выглядели иначе. Попробую еще раз запостить стек как он есть: в двух кодировках одновременно java.io.IOException: Cannot run program "НеСуществует.exe": CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) ... Caused by: java.io.IOException: CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë at java.lang.ProcessImpl.create(Native Method) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 17:26:28 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
e-rover, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 17:36:38 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
mayton, CreateProcess – это функция WinApi, к командному процессору отношения не имеет. Т.е. если Вы через Runtime.getRuntime().exec() запускаете "НеСуществует.exe", тест сообщения об ошибке будет в cp1252, а название файла в 1251. И это все в одной строке: java.io.IOException: Cannot run program "НеСуществует.exe": CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 18:04:53 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
e-rover, я провёл эксперимент. Создал дочернее окно CMD. Кодовая страница наследуется. Тоесть вам можно установить ее значение в процессе-родителе. Что у вас процесс-родитель я не знаю. Возможно это Java окружение для среды разработки. Там и конфигурируйте кодовую страницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 18:11:08 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
Уважаемый mayton, мой вопрос ни коем образом не касается CMD.EXE! Я запускаю программу "НеСуществует.exe". Для этого вызываю: Runtime.getRuntime().exec("НеСуществует.exe"); Ознакомьтесь с http://www.javaworld.com/jw-12-2000/jw-1229-traps.html Runtime.getRuntime().exec() - это не командная строка. Она выполняет запуск НЕ через CMD. Для запуска exe-шника jvm обращается к WinApi, вызывает функцию CreateProcess, просит ее запустить "НеСуществует.exe" и получает код ошибки 2 («Не удается найти указанный файл»). Jvm генерит IOException с сообщением «CreateProcess error=2, Íå óäàåòñÿ íàéòè óêàçàííûé ôàéë», где виндовый текст ошибки представлен в cp1252. Что совершенно неожиданно, т. к. java-процесс я запускаю с кодировкой cp1251. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 18:30:59 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
e-rover, а чему у тебя равны переменные user.language, user.country ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 18:42:04 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
mayton, user.language = ru user.country = RU ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 18:54:25 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
Ну и .... ? В голове не звенит колокольчик? Что надо что-то изменить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 18:55:57 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
mayton, Хотя сейчас и 7 часов пятницы, в голове не звенит. У Вас есть объяснение, почему сообщение идет в западноевропейской кодировке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 19:02:34 |
|
||
|
Как дождаться заверщения процесса
|
|||
|---|---|---|---|
|
#18+
e-rover, вот в топике тебе достаточно инфы чтобы решать проблему запуска процесс бильдера. Плевать вообще на текст ошибки! Там херячит локализованя стринговая константа. Хочешь ее увидеть в оригинале (английский) - стань англичанином для java. Проблемы кракозябр твоей консоли - это проблемы твоей консоли! Java всё честно отдаёт в Unicode! Усёк? Ну всё тогда давай. Не кашляй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 19:08:46 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=198&tid=2128101]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 345ms |

| 0 / 0 |
