2013-05-01 4 views
0

Я бег окна 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 

ли это ошибочное предположение?

+0

Вы уверены, что ваш PATH содержит «.»? – lifus

+0

FYI! Runtime.getRuntime() Exec (** cmdarray **, нуль, реж.); не совпадает с ** cmdArray **, определенным в начале. – NINCOMPOOP

+0

@NoobUnChained oh woops! это была опечатка. Был правильным в моем коде. – user972276

ответ

0

У вас возникла проблема с разрешением на диске C. Проверьте, выполнив команду "file.exe" вручную в драйвере C. Решение Better должно содержать "file.exe" в каком-либо месте, кроме привода C, и выполнить оттуда.

+0

Я могу выполнить файл через подсказку cmd без каких-либо проблем с разрешением – user972276

+0

Прямо сейчас файл находится в диске C, и я жестко закодировал путь для тестовых целей. Файл должен находиться в любом месте, где он был установлен, поэтому мне нужно, чтобы он работал на диске C, если это действительно так. – user972276

+0

Но это не сработает, если у пользователя возникли проблемы с этим диском! – NINCOMPOOP

 Смежные вопросы

  • Нет связанных вопросов^_^