2017-03-08 318 views
0

我正在編寫一個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_命令及其參數,而不是一系列命令。 –

回答

0

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

你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

相關問題