2009-02-03 72 views
3

如何在Runtime.getRuntime()。exec()的幫助下執行java程序。 例如,我們將java文件路徑設爲c:/java/abc.java。請幫我看看代碼。java中的運行時類

回答

1

你的意思是你想要一個Java程序來運行另一個Java程序。在這種情況下,This SO thread可能會有所幫助。

2

假設abc.java包含要執行的主要方法:

Runtime.getRuntime().exec("javac c:\java\abc.java -d c:\java\") 
Runtime.getRuntime().exec("java c:\java\abc") 
+0

的CreateProcess:C:\ j2sdk1.4.0 \ BIN \ HelloWorld的錯誤= 2 這是運行時異常消息 – Arun 2009-02-03 07:04:36

2

不要忘了:

  • 您可能需要讀取一個java程序
  • 的標準輸出/標準錯誤
  • 您可能必須在執行您的java命令前設置/更新環境變量和PATH

    創建過程:C:\ j2sdk1.4.0 \ BIN \ HelloWorld的誤差= 2

裝置的Win32的CreateProcess回報2作爲錯誤代碼時它不能找到所指定的命令;更具體地說,當命令沒有在其查找路徑上引用可執行文件時。

查看此SO question可獲得更完整的「Runtime.getRuntime().exec()」代碼,也可查閱this snippet

此代碼創建一個shell(如在Runtime.getRuntime().exec("cmd /K")中),其中您在sdtin上編寫任何要執行的命令。

此方法的興趣在於重用shell進程以從前面的命令中受益:它執行'cd',然後執行'dir',後一命令將顯示由該命令引用的目錄的內容cd命令。

對於PATH設置也是如此,在使用javacjava之前。

0

請參閱過去被稱爲javaalmanac的優秀資源。

http://www.exampledepot.com/egs/java.lang/Exec.html

try { 
    // Execute a command with an argument that contains a space 
    String[] commands = new String[]{"grep", "hello world", "/tmp/f.txt"}; 
    commands = new String[]{"grep", "hello world", "c:\\Documents and Settings\\f.txt"}; 
    Process child = Runtime.getRuntime().exec(commands); 
} catch (IOException e) { 
} 
2

您應該使用ProcessBuilder,而不是運行。基本用法如下:

Process process = new ProcessBuilder(command).start(); 

您可以在上面的鏈接中找到更多代碼。另見this question

1
String path1 = "f://" + File.separator+username+File.separator+progName; 
Runtime runtime = Runtime.getRuntime(); 
String command = "javac -classpath " + path + " " + path1; 
System.out.println(command); 
Process process = runtime.exec(command); 
InputStream error = process.getErrorStream();