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

如何使用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"); 
    } 
} 

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

+1

你读过'ProcessBuilder'构造函数的Javadoc吗?它接受一个_single_命令及其参数,而不是一系列命令。 –

如前所述由吉姆·加里森,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