Если ваш путь содержит косые черты, вы можете попробовать изменить их на обратную косую черту перед exec
ing.Кроме того, вы должны попытаться сделать путь абсолютным, включая букву диска и двоеточие (например, C:\test\myprog.exe
).Обратите внимание, что если вы кодируете путь в строке Java, вам нужно удвоить обратную косую черту ...
Как только вы это заработаете, вы можете ослабить эти ограничения, пока не выясните, что сломало вашу попытку.
РЕДАКТИРОВАТЬ 1: Некоторые распространенные ошибки с exec()
упоминаются в этой статье .Я не думаю, что что-то из этого применимо, но вы можете использовать код из последнего примера, чтобы запустить ваш .EXE в CMD.EXE
, чтобы получить достойное разрешение пути, обработку ошибок и тому подобное.
РЕДАКТИРОВАТЬ 2: Ваше имя исполняемого файла должно интерпретироваться как длинное имя файла.Я не уверен, что API может / справится с этим.Пожалуйста, попробуйте дать .EXE короткое, простое имя (только для тестирования), например NEWPROG.EXE (без второй точки в имени!) Но сначала обязательно попробуйте сначала CMD.EXE.
РЕДАКТИРОВАТЬ 3: Из чтения комментариев к другому ответу: Возможно ли, что ваша программа действительно работает и сама возвращает статус 2, потому что она не может найти файл?Есть ли какой-нибудь способ проверить работу вашей программы, возможно, вызвав ее из пакетного скрипта .CMD
, который вы запускаете из вашей Java-программы, и сделав запись перенаправленного вывода в файл?