如何使用Runtime.exec()或ProcessBuilder通过路径名打开谷歌浏览器?
问题描述:
我正在编写一个java代码,其目的是使用谷歌浏览器在youtube上打开一个URL,但我在理解这两种方法方面都没有成功。这是我目前的尝试。如何使用Runtime.exec()或ProcessBuilder通过路径名打开谷歌浏览器?
import java.lang.ProcessBuilder;
import java.util.ArrayList;
public class processTest
{
public static void main(String[] args)
{
ArrayList<String> commands = new ArrayList<>();
commands.add("cd C:/Program Files/Google/Chrome/Application");
commands.add("chrome.exe youtube.com");
ProcessBuilder executeCommands = new ProcessBuilder("C:/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe", "cd C:/Program Files/Google/Chrome/Application", "chrome.exe youtube.com");
}
}
它编译好了,但是当我运行它时没有任何反应。这笔交易是什么?
答
如前所述由吉姆·加里森,ProcessBuilder
的构造函数只执行一个命令。而且您不需要浏览目录以访问可执行文件。针对您的问题
两个可能的解决方案(适用于我的Windows 7,一定要更换你的浏览器的路径,如果neccesary)使用构造
随着ProcessBuilder
有两个参数:命令,参数(被传递到指挥)
try {
ProcessBuilder pb =
new ProcessBuilder(
"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
"youtube.com");
pb.start();
System.out.println("Google Chrome launched!");
} catch (IOException e) {
e.printStackTrace();
}
与Runtime
使用方法exec
带有一个参数,一个字符串数组。第一个元素是命令,以下元素用作此类命令的参数。
try {
Runtime.getRuntime().exec(
new String[]{"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
"youtube.com"});
System.out.println("Google Chrome launched!");
} catch (Exception e) {
e.printStackTrace();
}
答
你shoule调用start方法来执行操作,如:
ProcessBuilder executeCommands = new ProcessBuilder("C:/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe", "cd C:/Program Files/Google/Chrome/Application", "chrome.exe youtube.com");
executeCommands.start();
+0
你测试过了吗?我试过你的代码,没有任何反应。 – RubioRic
你读过'ProcessBuilder'构造函数的Javadoc吗?它接受一个_single_命令及其参数,而不是一系列命令。 –