Я использую Linux, но та же ошибка возникает, когда я запускаю ваш код (измененный для запуска .sh, а не .bat).
Попытка:
ProcessBuilder pb = new ProcessBuilder("c:\\adb.bat");
Видимо, использование ProcessBuilder.directory
не влияет на рабочий каталог ( в целях обнаружения исполняемого файла ), который был выбран при сборке компоновщика (по крайней мере, именно это, похоже, и происходит). скажем, это изменит рабочий каталог, поэтому я предполагаю, что файлы ввода / вывода могут быть относительно этого?)
Я не уверен, что он на самом деле делает внутри, но указание пути к исполняемому файлу в конструкторе решило проблему.
В этом посте рассказывается о проблеме и ее решении , но также поднимается вопрос о необходимости установки переменных среды, из которых переменные, подобные "путям", могут быть полезны, чтобы помочь ProcessBuilder
обнаружить исполняемый файл.