import java.awt.AWTException;
import java.awt.Robot;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class RickRoll {
public static void main(String[] args) throws AWTException, IOException, InterruptedException {
//create Robot
Robot robot = new Robot();
//runtime to open Microsoft Edge
Runtime runtime = Runtime.getRuntime();
String command = "msedge.exe";
下面的内容应该运行msedge
runtime.exec(command);
try {
Thread.sleep(2000);
}
catch (InterruptedException e){
e.printStackTrace();
}
robot.delay(1000);
}
}
我不明白为什么我总是得到一个错误,而不是运行msedge。我做错了什么?
您需要使用cmd来运行它。因此:
//runtime to open Microsoft Edge
Runtime runtime = Runtime.getRuntime();
String command = "cmd.exe /C start microsoft-edge:http://www.google.com";
runtime.exec(command);
您有几个选项,包括使用类java.lang.Runtime
,但我认为这是最不推荐的。
正如@CharlieArmstrong在评论中提到的,您需要执行文件msedge.exe
。如果PATH环境变量中包含该文件的文件夹是而不是,则需要提供该文件的完整路径。您可以使用类java.lang.ProcessBuilder来执行该文件。
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
Path path = Paths.get("C:",
"Program Files (x86)",
"Microsoft",
"Edge",
"Application",
"msedge.exe");
ProcessBuilder pb = new ProcessBuilder(path.toString());
try {
pb.start();
}
catch (IOException x) {
x.printStackTrace();
}
}
}
上面的代码将在Edge的主页上打开。如果您想打开一个特定的网页,只需添加URL即可。
public static void main(String[] args) {
Path path = Paths.get("C:",
"Program Files (x86)",
"Microsoft",
"Edge",
"Application",
"msedge.exe");
ProcessBuilder pb = new ProcessBuilder(path.toString(), "http://www.facebook.com");
try {
pb.start();
}
catch (IOException x) {
x.printStackTrace();
}
}
或者,您可以使用类java.awt.Desktop。如果您只想启动Edge,请使用方法open
。同样,如果Edge不在您的PATH上,那么您需要提供完整的路径。
import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class DesktopT {
public static void main(String[] args) {
if (Desktop.isDesktopSupported()) {
Path path = Paths.get("C:",
"Program Files (x86)",
"Microsoft",
"Edge",
"Application",
"msedge.exe");
File f = path.toFile();
try {
Desktop desktop = Desktop.getDesktop();
desktop.open(f);
}
catch (IOException x) {
x.printStackTrace();
}
}
}
}
如果要打开特定的网页,请使用方法browse
(请注意,方法browse
将使用默认的Web浏览器,该浏览器可能不一定是Edge。(
public static void main(String[] args) {
if (Desktop.isDesktopSupported()) {
try {
URI uri = new URI("https://www.yahoo.com");
Desktop desktop = Desktop.getDesktop();
desktop.browse(uri);
}
catch (URISyntaxException | IOException x) {
x.printStackTrace();
}
}
}
请注意,以上所有代码都是在Windows10上使用JDK17.0.2运行的。运行时,Java代码启动Edge并终止。但是,类Desktop
还启动事件调度线程(EDT(,如果您使用的是早期JDK版本,则该线程可能不会终止。如果是这种情况,那么您可以添加以下内容作为方法main
中的最后一行。
java.lang.System.exit(0);
这一行将终止JVM。