Я бег окна 7 и есть файл ех я пытаюсь запустить с помощью следующей команды в Java:ошибки при попытке выполнить ех от объекта времени выполнения в Java
File dir = new File("C:\\PATH\\TO\\DIR");
String[] cmdArray = {"file.exe"};
if(dir.exists()){
for(String s : dir.list()){
if(s.equals(cmdArray[0]))
System.out.println("File exists!");
}
}
Runtime.getRuntime().exec(cmdArray,null,dir);
ехеса (...) команда, однако, дает мне эту ошибку:
Cannot run program "file.exe" (in directory "C:\PATH\TO\DIR"): CreateProcess error=2, The system cannot find the file specified
Вышеприведенный код распечатывает «Файл существует!» поэтому файл есть, и Java знает, что он есть. Я не знаю, как это возможно.
Кроме того, мне нужно использовать Runtime.getRuntime() .exex (...). Этот вызов фактически находится внутри другого метода, который я не должен менять, поэтому альтернативные решения не будут работать для меня. Заранее спасибо!
EDIT: Я побежал файл в CMD окно без привилегий администратора и получил следующее сообщение:
Error in Opening Configuration File in Read Mode
Так я предполагаю, у меня есть проблемы с разрешениями. Как я могу изменить разрешения, чтобы я мог его запустить?
EDIT2:
Я попытался изменить cmdArray к этому:
String[] cmdArray = {"C:\\PATH\\TO\\DIR\\file.exe"};
и он работал как шарм. Один вопрос. Почему это работает, но не наоборот? Я предположил, что Runtime.exec() побежал на высоком уровне, как это в CMD wibndow:
pushd dir
cmdArray[0] cmdArray[1] cmdArray[2] ... cmdArray[length - 1]
popd dir
ли это ошибочное предположение?
Вы уверены, что ваш PATH содержит «.»? – lifus
FYI! Runtime.getRuntime() Exec (** cmdarray **, нуль, реж.); не совпадает с ** cmdArray **, определенным в начале. – NINCOMPOOP
@NoobUnChained oh woops! это была опечатка. Был правильным в моем коде. – user972276