|
|
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Почему происходит прерывание выполнения процесса Делал так: String f = pathProgram + System.getProperty("file.separator") + "sdat2img.bat"; if (new File(f).exists()) { deletefile(new File(f)); } Functions.writefile(f, "cd \"%~dp0\""); Functions.writefile(f, "bin\\python3\\python.exe bin\\sdat2img.py system.transfer.list system.new.dat system.img"); if (new File(f).exists() == true) { Path path = Paths.get(f); try { Files.setAttribute(path, "dos:hidden", true); new ProcessBuilder(f).start().waitFor(); deletefile(new File(f)); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } и так пробовал try { new ProcessBuilder(pathBin + System.getProperty("file.separator") + "python3" + System.getProperty("file.separator") + "python.exe", sdat2imgpy, SystemTransferList, SystemNewDat, SystemImg).start().waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } виснет одинаково. Ждет минуты 2 и все, дальше питон не работает. В процессах висит, но не работает. Не работает от слова совсем. Если создать bat файл и в ручную его запустить то все работает, если из java запускать - 2 мин и не работает. Куда копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 09:48 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Попробуйте осилить документацию касательно standard output и standard error https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html Ваш питон пытается что-то записать в standard output или standard error. Но никто этого не читает. Вот он и блокируется. Про блокирующие IO слышали? Решений возможых масса. 1. Взять пример кода из документации или любого туториала и прописать редиректы для выхлопа. Вы, ведь, не утруждаете себя чтением документации к классам которые используете? 2. Запустить фоновые потоки, которые просто читают выхлоп из процесса https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html 3. Добавить "cmd /C start" под виндой, чтобы отвязать нафиг фоновый процесс от Java. Но вам это не подходит, так как вы хотите использовать waitFor(). 4. Взять любую либу, которая всё вышеперечисленное делает за вас. https://commons.apache.org/proper/commons-exec/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:25 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ещё раз повторюсь, что работает без ошибок через батник. Но если этот же батник запустить из java и ждать его завершения - он вешается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:31 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
BlackeAngel, Ещё раз повторюсь, что работает без ошибок через батник. Но если этот же батник запустить из java и ждать его завершения - он вешается. Ещё раз повторюсь, вешается потому что не может ничего вывести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:33 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
BlackeAngelи так пробовал Код: java 1. Забавно, что Path/Paths вы уже используете, но подобную ахинею продолжаете писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:35 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Вот смотрите. Этот питоновские файл конвертит из одного формата в другой. При запуске из java происходит конвертирование до 777мб против того что на выходе должно получиться 2.7 гига. В окно он выводит только информацию о том что сейчас делает. Ошибок никаких этот скрипт никогда не выводит. Что мешает в java, зачем java душит этот процесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:37 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Если заметили то и кодом создаю этот же батник и его запускаю. Все одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:40 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
BlackeAngelВсе одно и то же. Даже "текущий каталог"? Потому что для батника вы его зачем-то указываете явно, а для второго способа особо не заморачиваетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:50 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Для батника понятно почему, ибо чем пути короче, тем лучше и без пробелов в путях, чтоб не было трансов. А вот на счёт java, я хз как он там это обрабатывает. Сначала думал java криво отрабатывает, поэтому и решил вывести в батник и запустить. Оказалось одно и то же. А если этот же батник покляцкать мышкой, то он отрабатывает правильно, на выходе все те 2.7 гига, какие и должны быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:55 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
BlackeAngelДля батника понятно почему, ибо чем пути короче, тем лучше и без пробелов в путях, чтоб не было трансов. Ересь какая-то. BlackeAngelСначала думал java криво отрабатывает Ну, да. Первая мысль это обвинить платформу, которую использую миллионы людей по всему миру и которая покрыта тысячами автоматизированых тестов. BlackeAngel, поэтому и решил вывести в батник и запустить. Оказалось одно и то же. А если этот же батник покляцкать мышкой, то он отрабатывает правильно, на выходе все те 2.7 гига, какие и должны быть. Что-то вы путаетесь, то у вас батник работает, то не работает. Так работает батник из Java или нет??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 11:00 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Я не путаюсь, я пишу как есть. Работает не полноценно = не работает. Работает = работает. Но если этот же батник запустить из java и ждать его завершения - он вешается. При запуске из java происходит конвертирование до 777мб против того что на выходе должно получиться 2.7 гига. Работает при А если этот же батник покляцкать мышкой, то он отрабатывает правильно, на выходе все те 2.7 гига, какие и должны быть. Даже если из программы написанной на бейсике запустить и то работает, а из java - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 11:07 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Отлично. Мы выяснили что из Java не работает ровным счетом нихрена. Внимание вопрос. Что не так с первоначальным советом добавить redirect-ы в ProcessBuilder что вы его так упорно игнорируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 11:27 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Добавил редиректы и все заработало. Что за нафиг такой? В выходных файлах правда пустота, но - почему такая дикая хрень с этой java? Что просто нельзя вызови и жди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 12:31 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
BlackeAngelДобавил редиректы и все заработало. Что за нафиг такой? Всегда пожалуйста. BlackeAngelВ выходных файлах правда пустота "Видишь суслика?" (с) BlackeAngelно - почему такая дикая хрень с этой java? Что просто нельзя вызови и жди. Ну, так может надо было брать платформу, в которой всё просто? Которая сбросит ваши логи в /dev/null и вы будете спокойно наслаждаться тем что "а у меня всё работает" и не важно что происходит на самом деле и у конечного пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 13:23 |
|
||
|
Ожидание завершения процесса
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Ну кто знал что у java такие скалы подводные. Ну посоветуйте мне тогда кроссплатформенный язык который работал бы и на windows, linux,mac os, android? И чтоб работал с окнами, файлами, и тп прелести, ещё и без костылей. Да ещё и с огромной документацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39523138&tid=2122586]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
59ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 317ms |

| 0 / 0 |
