Как запустить системное приложение (исполняемый файл) из Java

В настоящее время во многих приложениях во время выполнения необходимо полагаться на другие приложения, чтобы гарантировать целостность приложения. Например, сторонние приложения, целью которых является сохранение подписи с устройства, установленного на компьютере. В Java это довольно легко с помощью класса Runtime, этот класс позволяет приложению взаимодействовать со средой, в которой оно выполняется. Например, в Windows вы сможете открыть приложение Notepad.exe с помощью псевдонима блокнота из CLI, поэтому с Java вы сможете запустить приложение notepad.exe со следующими 3 строками кода:

Runtime runTime = Runtime.getRuntime();
String executablePath = "notepad";
Process process = runTime.exec(executablePath);

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

Полный пример

Следующий фрагмент, упакованный в приложении, запустит приложение (исполняемый файл), определенное в executablePath переменная и перехватит любое исключение, вызванное примером:

package sandbox;
import java.io.IOException;
public class Sandbox {
/**
* Example of how to run an executable from Java.
*
* @param args
*/
public static void main(String[] args) {
try {
Runtime runTime = Runtime.getRuntime();
String executablePath = "C:\\Users\\sdkca\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe";
Process process = runTime.exec(executablePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}

Если исполняемый файл не существует, код перехватит исключение и отобразит в консоли вывод, подобный следующему:

java.io.IOException: Cannot run program "my-executable-path.exe": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at sandbox.Sandbox.main(Sandbox.java:18)
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.(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
Ссылка на основную публикацию
Adblock
detector