如何使用Runtime.exec()或ProcessBuilder通过其路径名打开谷歌浏览器?

时间:2017-03-08 01:18:24

标签: java processbuilder runtime.exec

我正在编写一个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");
    }
}

它编译正常,但是当我运行它时没有任何反应。这笔交易是什么?

2 个答案:

答案 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();