2013-07-18 99 views
1

有沒有什麼辦法可以編寫java程序來一個一個運行其他java程序....我創建了一個bat文件cmd ..來運行所有的java程序..但在CMD ....第一個程序沒有完成,第二個程序開始運行..這就是發生了什麼..有沒有什麼辦法在完成第一個程序後,比第二個程序..如果第一個程序錯誤比不上'牛逼運行所有其他密切overthere ..或者請告訴我任何想法我怎麼能做到這一點與Java程序..Java代碼一個接一個運行其他java程序

我的bat文件看起來像變薄

cd C:\ 
java program1 

cd C:\ 
java program2 
pause 

請幫助我!謝謝!!

+0

你可以看看http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html – sanbhat

+0

如果其他「計劃」在類路徑中,你可以簡單地編寫一個啓動程序,它在命令行中獲取主類名稱列表並運行它們。 'main'方法只是另一種方法,因此使用Class.forName方法加載每個類文件,反省獲得'main'方法並執行它,然後轉到下一個方法。 – Jere

回答

0

這看起來更像是一個java問題的批處理問題。雖然Java可以用於此目的,但它對於管理進程並不是特別方便。堅持批量會更容易,特別是因爲您已經擁有一個幾乎可用於您的批處理文件。

您可以在語句後使用

if ERRORLEVEL 1 exit 

批量停止執行的情況下,錯誤發生。在你的java程序中,爲了清楚地說明發生了錯誤,你必須使用System.exit(1);退出你的程序或其他非零值。此退出碼是批量測試的錯誤級別。

編輯

生成的批處理文件將類似於此:

cd C:\ 
java program1 
if ERRORLEVEL 1 exit 

cd C:\ 
java program2 
if ERRORLEVEL 1 exit 

pause 
+0

我需要在bat文件中添加什麼?如果ERRORLEVEL 1退出!我怎麼可以一個一個的運行程序完成第一個比第二個..請幫助我! – user2559055

+0

它會一個一個做? – user2559055

+0

AFAIK,批次總是按順序執行命令,這意味着一個接一個。如果出現錯誤,添加可確保退出。你應該很簡單的嘗試一下。 –

0

試試這個

public static void main(String[] args) { 
     Process p = Runtime.getRuntime().exec("java your_class.class"); 
     p.waitFor(); 
     p = Runtime.getRuntime().exec("java seccond_class.class"); 
     p.waitFor(); 
    } 

在exec方法可以執行cmd命令

+0

噢好吧..我需要寫路徑嗎?或只有類文件..或它會做一個接一個或相同的bat文件?因爲如果第一個程序沒有完成,第二個啓動它不會工作..我想..在完成第一個程序後,比第二個程序運行?請幫幫我!! – user2559055

+0

如果你的其他java程序不在classpath下,它將在你的類路徑下運行這個cmd,而不是你需要指定完整路徑。您需要逐一運行每個程序,我已經編輯了示例 – nkukhar

0

好吧試試這個..

cd C:\ 
start java program1 

java program2 

pause 
+0

回答其他目錄中的程序如何?它會做一個一個?? – user2559055

+0

不,它不會執行「一個一個」它會打開一個新窗口並執行program1 ....如果你想要,你可以在啓動cmd後改變目錄 –

相關問題