У меня есть следующие Java-код для запуска родной EXE-файл Windows, используя ProcessBuilderИспользование Java ProcessBuilder для запуска родной Windows, .exe ошибки продуцирующие :: Имя каталога недействителен
public class HMetis {
private String exec_name = null;
private String[] hmetis_args = {"hmetis.exe", "null", "2", "1", "10", "1", "1", "1", "0", "0"};
private Path path;
private File file;
public HMetis(String hgraph_exec, String hgraph_file) {
this.exec_name = hgraph_exec;
this.hmetis_args[1] = hgraph_file;
}
public void runHMetis() throws IOException {
this.path = Paths.get("C:\\hMetis\\1.5.3-win32");
this.file = new File(path+"\\"+this.exec_name+".exe");
ProcessBuilder pb = new ProcessBuilder(this.hmetis_args);
pb.directory(this.file);
try {
Process process = pb.start();
} finally {
// do nothing
}
}
}
после выполнения этого кода я нахожусь получив ошибку ниже, хотя из сообщения кажется, что имя каталога полностью сформировано и ОК! Любые предложения, пожалуйста?
Cannot run program "hmetis.exe" (in directory "C:\hMetis\1.5.3-win32\hmetis.exe"):CreateProcess error=267, The directory name is invalid
Кажется, что вы добавляете исполняемое имя в путь к каталогу - вы пробовали без этого? –
Возможный дубликат [Запуск Windows .exe-файла с несколькими аргументами с использованием Java ProcessBuilder не создает никакого выходного файла, как ожидалось) (http://stackoverflow.com/questions/17809295/running-windows-exe-file-with-multiple- arguments-using-java-processbuilder-is-n) Отредактируйте свой более ранний вопрос, а не создавайте новые сообщения об одной и той же проблеме. Вы также, кажется, проигнорировали мой совет, который я вам посоветовал. Так почему же этот дублирующий вопрос будет другим? –
@ Нельзя дублировать эти два случая - это два разных случая с различными наблюдениями. Ранее заданный вопрос говорит, что файл .exe работает, не создавая сообщения об ошибке, но файл .exe не работает так, как ожидается. – joarderm