Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ожидание завершения процесса / 16 сообщений из 16, страница 1 из 1
19.09.2017, 09:48
    #39523066
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Почему происходит прерывание выполнения процесса
Делал так:
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 мин и не работает.
Куда копать?
...
Рейтинг: 0 / 0
19.09.2017, 10:18
    #39523097
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
...
Рейтинг: 0 / 0
19.09.2017, 10:25
    #39523102
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Попробуйте осилить документацию касательно 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/
...
Рейтинг: 0 / 0
19.09.2017, 10:31
    #39523105
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Blazkowicz,
Ещё раз повторюсь, что работает без ошибок через батник. Но если этот же батник запустить из java и ждать его завершения - он вешается.
...
Рейтинг: 0 / 0
19.09.2017, 10:33
    #39523107
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
BlackeAngel,
Ещё раз повторюсь, что работает без ошибок через батник. Но если этот же батник запустить из java и ждать его завершения - он вешается.
Ещё раз повторюсь, вешается потому что не может ничего вывести.
...
Рейтинг: 0 / 0
19.09.2017, 10:35
    #39523109
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
BlackeAngelи так пробовал
Код: java
1.
pathBin + System.getProperty("file.separator") + "python3" + System.getProperty("file.separator") + "python.exe"


Забавно, что Path/Paths вы уже используете, но подобную ахинею продолжаете писать.
...
Рейтинг: 0 / 0
19.09.2017, 10:37
    #39523110
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Blazkowicz,
Вот смотрите. Этот питоновские файл конвертит из одного формата в другой. При запуске из java происходит конвертирование до 777мб против того что на выходе должно получиться 2.7 гига. В окно он выводит только информацию о том что сейчас делает. Ошибок никаких этот скрипт никогда не выводит. Что мешает в java, зачем java душит этот процесс?
...
Рейтинг: 0 / 0
19.09.2017, 10:40
    #39523114
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Blazkowicz,

Если заметили то и кодом создаю этот же батник и его запускаю. Все одно и то же.
...
Рейтинг: 0 / 0
19.09.2017, 10:50
    #39523122
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
BlackeAngelВсе одно и то же.
Даже "текущий каталог"? Потому что для батника вы его зачем-то указываете явно, а для второго способа особо не заморачиваетесь.
...
Рейтинг: 0 / 0
19.09.2017, 10:55
    #39523130
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Blazkowicz,
Для батника понятно почему, ибо чем пути короче, тем лучше и без пробелов в путях, чтоб не было трансов.
А вот на счёт java, я хз как он там это обрабатывает.
Сначала думал java криво отрабатывает, поэтому и решил вывести в батник и запустить. Оказалось одно и то же.
А если этот же батник покляцкать мышкой, то он отрабатывает правильно, на выходе все те 2.7 гига, какие и должны быть.
...
Рейтинг: 0 / 0
19.09.2017, 11:00
    #39523135
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
BlackeAngelДля батника понятно почему, ибо чем пути короче, тем лучше и без пробелов в путях, чтоб не было трансов.

Ересь какая-то.

BlackeAngelСначала думал java криво отрабатывает

Ну, да. Первая мысль это обвинить платформу, которую использую миллионы людей по всему миру и которая покрыта тысячами автоматизированых тестов.

BlackeAngel, поэтому и решил вывести в батник и запустить. Оказалось одно и то же.
А если этот же батник покляцкать мышкой, то он отрабатывает правильно, на выходе все те 2.7 гига, какие и должны быть.
Что-то вы путаетесь, то у вас батник работает, то не работает. Так работает батник из Java или нет???
...
Рейтинг: 0 / 0
19.09.2017, 11:07
    #39523138
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Blazkowicz,
Я не путаюсь, я пишу как есть. Работает не полноценно = не работает. Работает = работает.
Но если этот же батник запустить из java и ждать его завершения - он вешается.

При запуске из java происходит конвертирование до 777мб против того что на выходе должно получиться 2.7 гига.

Работает при
А если этот же батник покляцкать мышкой, то он отрабатывает правильно, на выходе все те 2.7 гига, какие и должны быть.

Даже если из программы написанной на бейсике запустить и то работает, а из java - нет.
...
Рейтинг: 0 / 0
19.09.2017, 11:27
    #39523155
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Отлично. Мы выяснили что из Java не работает ровным счетом нихрена. Внимание вопрос. Что не так с первоначальным советом добавить redirect-ы в ProcessBuilder что вы его так упорно игнорируете?
...
Рейтинг: 0 / 0
19.09.2017, 12:31
    #39523227
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Blazkowicz,
Добавил редиректы и все заработало. Что за нафиг такой? В выходных файлах правда пустота, но - почему такая дикая хрень с этой java? Что просто нельзя вызови и жди.
...
Рейтинг: 0 / 0
19.09.2017, 13:23
    #39523258
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
BlackeAngelДобавил редиректы и все заработало. Что за нафиг такой?

Всегда пожалуйста.

BlackeAngelВ выходных файлах правда пустота

"Видишь суслика?" (с)

BlackeAngelно - почему такая дикая хрень с этой java? Что просто нельзя вызови и жди.
Ну, так может надо было брать платформу, в которой всё просто? Которая сбросит ваши логи в /dev/null и вы будете спокойно наслаждаться тем что "а у меня всё работает" и не важно что происходит на самом деле и у конечного пользователя.
...
Рейтинг: 0 / 0
19.09.2017, 14:04
    #39523289
BlackeAngel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ожидание завершения процесса
Blazkowicz,
Ну кто знал что у java такие скалы подводные.

Ну посоветуйте мне тогда кроссплатформенный язык который работал бы и на windows, linux,mac os, android? И чтоб работал с окнами, файлами, и тп прелести, ещё и без костылей. Да ещё и с огромной документацией.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ожидание завершения процесса / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]