Каковы различия между Java jlan.lang.Runtime.exec () и PHP exec ()? - PullRequest
0 голосов
/ 11 декабря 2011

В Java не работает следующее (исключение выдается):

Runtime.getRuntime().exec("cd mydir; myprog");

То же самое отлично работает в PHP:

exec("cd mydir; myprog");

Что именно отличается в реализации Java и почему (на первый взгляд кажется более ограниченным)?

Ответы [ 3 ]

2 голосов
/ 11 декабря 2011

команда java exec не использует системный интерпретатор команд.что-то вроде «cd mydir; myprog» зависит от системного интерпретатора командной строки (например, на windows cmd, на linux sh), чтобы разбить его на 2 отдельные команды и выполнить каждую из них.Java не вызывает системный интерпретатор команд, так что это не работает.вам либо нужно вызывать каждую команду отдельно, либо вызывать нужного интерпретатора самостоятельно как часть командной строки.

0 голосов
/ 11 декабря 2011

Я видел, что у людей бывают такие проблемы, и я уверен, что есть несколько способов, однако большинство людей ответили так: добавьте cmd перед ним.

Runtime.getRuntime().exec("cmd cd mydir; myprog");
0 голосов
/ 11 декабря 2011

Предполагается, что вы используете апплет, а не Java в среде CLI на сервере? Если это так, то ваша среда выполнения Java работает на клиентском компьютере, а не на сервере.

В Java также есть лучший способ обработки нескольких команд, чем точка с запятой. Вместо использования подписи:

Runtime.exec(String)

попробуйте использовать это для каждой из ваших команд:

Runtime.exec(String[])

и сделайте каждый аргумент вашей команды элементом в массиве String.

...