Если вы запустите тестовую программу и используете ps
или диспетчер задач, вы заметите, что 7z
работает. Ваша проблема в том, что вы не потребляете выходные данные Процесса. Поэтому 7z
быстро блокируется при попытке вывести содержимое вашего архива.
Если вы добавите перед process.waitFor()
следующие строки, вы получите работающую программу:
InputStream in = process.getInputStream();
byte[] buf = new byte[256];
while (true) {
int c = in.read(buf);
if (c == -1)
break;
System.out.println(new String(buf));
}
Однако это будет использовать только стандартный процесс, который вам нужен, чтобы сделать то же самое с process.getErrorStream()
. Возможно, вам будет проще использовать ProcessBuilder
для запуска вашего процесса, поскольку он позволяет объединять потоки stderr и stdout.