Несколько минут назад я увидел другой ответ, в области комментариев я наконец нашел способ его решить. Мне жаль, что я не знаю, как этот ответ был удален ... или кто дал ответ, комментируя ответ ...
ОБНОВЛЕНИЕ: в ходе дальнейшего расследования я обнаружил, что Мэтт Кейн дал правильный ответ, комментируя. Пожалуйста, позвольте мне выразить мою глубокую благодарность за вашу помощь. ;-)
Вот как я справился с этим согласно комментарию Мэтта и протестировал работу:
String[] cmdArray = new String[]{"C://Program Files//MyProgram//myprogram.exe", arg1, arg2};
Runtime.exec(cmdArray);
где arg1 и arg2 - это два параметра, передаваемых myprogram.exe
Использовать перегруженную версию exec ():
1) Process exec (String [] cmdarray)
2) Process exec (String [] cmdarray, String [] envp)
3) Process exec (String [] cmdarray, String [] envp, File dir)
Любой из них будет работать. Здесь я хотел бы упомянуть разницу между dir в 3) и абсолютным путем в cmdarray, который может быть "" C: // Program Files // MyProgram // "в моем случае.
В dir in 3) вы можете указать каталог, в котором вы запускаете .exe, все указанные вами относительные каталоги будут добавлены после этого dir. Пример: если ваш каталог C: / Hello World, и в вашем .exe вы собираетесь хранить файл в / folder1, наконец, вы найдете файл, расположенный в C: / Hello World / folder1
Однако dir не работает для исполняемого файла (в моем случае это myprogram.exe). Например, если ваш .exe находится в C: / Program Files / MyProgram /, и вы уже установили dir в C: / Program Files / MyProgram. Вы не можете успешно запустить программу без указания абсолютного пути к исполняемому файлу. В моем случае вы можете добиться успеха только через:
cmdarray [0] = "C: // Программные файлы // MyProgram // myprogram.exe"
Если вы ошиблись, ошибка будет выглядеть так:
java.io.exception: не удается запустить программу «myprogram.exe» (в каталоге «C: / Program Files / MyProgram /»): ошибка CreateProcess = 2, система не может найти указанный файл.
Обратите внимание, что в нем говорится только «невозможно запустить в ** каталоге» вместо «не удается найти файл в *** каталоге». Я думал, что это довольно смешно, но в любом случае, так оно и есть.