如今, 在许多应用程序中, 必须在运行时依赖其他应用程序以保证应用程序的完整性。例如, 第三方应用程序的目标是存储来自计算机上安装的设备的签名。在Java中, 使用Runtime类非常容易, 该类允许应用程序与应用程序在其中运行的环境进行交互。例如, 在Windows中, 你将能够使用CLI中的别名notepad打开Notepad.exe应用程序, 因此, 对于Java, 你应该能够使用以下3行代码来启动notepad.exe应用程序:
Runtime runTime = Runtime.getRuntime();
String executablePath = "notepad";
Process process = runTime.exec(executablePath);
但是, 你将不会始终拥有可执行文件的快捷方式, 因此你需要提供可执行文件的绝对路径。在这篇简短的文章中, 我们将为你提供一个简短的摘要, 使你可以轻松地从系统启动第三方应用程序。
完整的例子
打包在应用程序中的以下代码段将启动在executePath变量中定义的应用程序(可执行文件), 并将捕获该示例触发的任何异常:
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.<init>(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
编码愉快!
评论前必须登录!
注册