Сделать приложение запущенным в своем собственном каталоге - PullRequest
1 голос
/ 19 января 2009

Я пытаюсь заставить приложение (игру) запускаться со скриптом Java. За этим стоит длинное объяснение, поэтому я пропущу эту часть.

Игра не запустится, если она не будет запущена из своего собственного каталога, IE: простое указание Java для запуска EXE вызывает ошибки в игре Он должен быть запущен из своего каталога.

Я часами гуглял над этим и, похоже, не могу найти никаких реальных ответов. После долгих поисков я понял, что это должно быть правильно:

String workingDir = "F:\\Games\\COD4\\";
String cmd = "iw3mp.exe";           

Runtime.getRuntime().exec(cmd,null,new File(workingDir));

Однако я получаю эту ошибку:

Exception in thread "main" java.io.IOException: Cannot run program "iw3mp.exe" (in directory "F:\Games\COD4"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at cod4launcher.main(cod4launcher.java:29)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 4 more

Пожалуйста, помогите! Спасибо.

Ответы [ 2 ]

6 голосов
/ 19 января 2009

Попробуйте вместо этого:

String workingDir = "F:\\Games\\COD4\\";
String cmd = workingDir + "iw3mp.exe";
Runtime.getRuntime().exec(cmd,null,new File(workingDir));

iw3mp.exe, вероятно, не находится в вашем системном пути, поэтому вы должны указать Java абсолютный путь к исполняемому файлу.

0 голосов
/ 15 сентября 2011

Использование java.lang.ProcessBuilder#directory(java.io.File)

Processs p = 
    new ProcessBuilder(cmd).
        directory(new File(workingDir)).
        start();
...