我正在编写一个java代码,其目的是使用谷歌浏览器在youtube上打开一个URL,但我没有成功理解这两种方法。这是我目前的尝试。
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");
}
}
它编译正常,但是当我运行它时没有任何反应。这笔交易是什么?
答案 0 :(得分:0)
如Jim Garrison所述,ProcessBuilder
的构造函数只执行一个命令。而且您无需浏览目录即可访问可执行文件。
针对您的问题的两种可能解决方案(对我的Windows 7有效,如果需要,请务必更换Chrome路径)
ProcessBuilder
使用带有两个参数的构造函数:command,argument(要传递给命令)
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
和一个参数,一个String数组。第一个元素是命令,以下元素用作此类命令的参数。
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();
}
答案 1 :(得分:-1)
你要调用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();