這是我的問題: 我有一個.bat文件,它有許多命令。當我使用processbuilder從我的java程序中調用這個bat文件時,它開始在.bat文件中逐行執行命令。但是,當它到達執行perl程序的最後一行時,它會掛起並且程序永遠不會結束。它永遠掛在那裏。任何想法爲什麼這可能會發生。僅供參考,perl代碼沒有問題,我可以執行從Java程序執行批處理文件時出錯
1
A
回答
0
嘿,我能夠解決這個問題。我所要做的只是在我的java代碼中包含一個關閉進程輸出流的聲明。沒有它,它正在等待命令行中的perl程序被永久執行。我不完全確定這種行爲,任何信息都可以幫助
2
您的perl程序是否寫入標準輸出? 我懷疑問題是Java進程將子進程的標準輸出和標準錯誤輸出重定向到管道。 該管道的接收端連接到java程序,因此如果您未能讀取其輸出,則從Java調用的寫入標準輸出/錯誤的任何子進程都會阻塞。 您必須從Java程序中刪除perl程序的輸出或讀取子進程的輸出(Process.getInputStream()
和/或Process.getErrorStream()
)。
+0
:嘿,我能夠解決這個問題。我所要做的只是在我的java代碼中包含一個關閉進程輸出流的聲明。沒有它,它正在等待命令行中的perl程序被永久執行。我對這種行爲並不確定,任何信息都會有所幫助。 – Max 2011-03-06 06:55:52
相關問題
- 1. 執行批處理文件時出錯
- 2. 從.CHM文件執行批處理文件時出錯
- 3. 遠程執行批處理文件java
- 4. Java程序在執行批處理時拋出異常
- 5. Java&SQL - 批處理必須執行或清除批處理時出錯
- 6. 無法使用批處理文件執行java程序
- 7. 執行Java應用程序的批處理文件
- 8. 批處理文件執行
- 9. 批處理文件未從php執行
- 10. 從批處理文件中執行.exe
- 11. 從C#執行批處理文件#
- 12. 從Java程序執行Ghostscript時出錯
- 13. 如何從批處理文件執行c#console應用程序
- 14. 從Windows執行批處理文件窗體應用程序
- 15. 處理從批處理文件運行Java的錯誤
- 16. 批處理文件,使另一個批處理文件執行
- 17. 從批處理文件運行Java打包程序
- 18. 無法從java程序運行批處理文件
- 19. 從java批處理文件運行jar
- 20. 從java運行批處理文件
- 21. 從java運行批處理文件?
- 22. 從VB腳本運行批處理文件時出錯
- 23. 通過perl腳本執行批處理時,將批處理文件錯誤和輸出到日誌文件
- 24. 從批處理執行java JCL
- 25. 批處理文件被應用程序執行時重定向命令輸出
- 26. 執行多個批處理文件後,同時完成批處理文件
- 27. 使用進程和運行時類執行批處理文件
- 28. 如何從java執行批處理文件?
- 29. 我們如何從Java執行批處理文件
- 30. 使用Java在遠程系統上執行批處理文件
你可以從java運行perl,帶或不帶'.bat'腳本嗎? – 2011-03-01 10:36:23
我的猜測是PATH環境var沒有設置,因此沒有找到perl解釋器。嘗試提供tjhe perl解釋器的完整路徑:c:\ path \ to \ perl \ perl.exe ... – rene 2011-03-01 10:39:14
我想我們需要看到批處理文件和Perl腳本有任何幫助。看看你是否可以在一個小例子中複製bug行爲,你可以在這裏發表。 – 2011-03-01 13:25:39