Я хочу открыть EXE-файл из программы Java. Я попробовал 2 процедуры. Программа может запускать некоторые программы, такие как NotePad++, но не может запускать мой EXE-файл C++. Я пытался:
Process exec = Runtime.getRuntime().exec(file.getAbsolutePath());
ProcessBuilder processBuilder = new ProcessBuilder(file.getAbsolutePath());
но ни один из вышеперечисленных не работает. Никаких исключений не выдается, и exec.isAlive = true.
Убедитесь, что вы читаете потоки ввода/ошибки процессов и проверяете значение выхода (вы можете вызвать waitFor для процесса, чтобы дождаться его завершения)
В случае ProcessBuilder вы должны вызвать на нем start(). Как сказал MadProgrammer, вы должны обязательно обрабатывать каналы для подпроцесса, чтобы предотвратить его блокировку. Или перенаправьте их на использование stdio вашего процесса: new ProcessBuilder(file.getAbsolutePath()).inheritIO().start();…




Ваша ошибка в том, что вы выбрали абсолютный путь в первой процедуре. Попробуйте использовать относительный путь, я только что проверил, и он работает нормально.
Это также работает для меня (используя 2 обратных слэша).
Runtime.getRuntime().exec("C:\\Program Files\\DDNet\\DDNet.exe");
С уважением
Это неправда, это вообще не важно, я сказал, что исключение не выбрасывается.
Если значение
isAliveравно true, то приложение было запущено (проверьте с помощью диспетчера задач). Если ваша программа на C++ работает неправильно, проблема должна быть связана с вашим приложением C++, а не с приложением Java. Отладьте свое приложение C++.