2009-12-07 25 views
1

我需要在java中讀取一些錯誤消息,我試圖在getErrorStream中執行此操作,然後readLine,但我得到了exeption。 我添加了一個鏈接到我想要的錯誤消息的圖片閱讀 http://yfrog.com/0986806495p在java中讀取錯誤對話框

TNX

+3

直到我看到相反的證據,我纔會假設問題來自腳本kiddie hacker wannabe;但它仍然是一個有效的編程問題(在正確的情況下它可能有答案),所以我不同意想要關閉它的人。 – 2009-12-07 21:07:14

+0

我不想做任何違法的事情,這是我需要在一些網站上解決的挑戰。 – aharon 2009-12-08 11:39:51

回答

0

你不能

被顯示在操作系統的窗口管理器的錯誤信息,不可讀。

您從標準錯誤中讀取的嘗試失敗,可能是因爲該應用程序無法首先寫入標準錯誤。

+1

我不同意你答案的第二部分:從stderr中讀取,如果正確完成,不會因爲沒有寫入任何內容而發生錯誤。相反,我懷疑即使他正在執行exec(),他的程序中也有一個錯誤,因爲在exec'd進程中設置所有流都是不平凡的。 – 2009-12-07 21:15:08

+0

當然,如果做得對。如果沒有可讀的內容,並且他以某種方式強制讀取,那麼錯誤地完成可能會失敗。至於我們無法說明的問題的正確狀態。 – OscarRyz 2009-12-07 21:25:17

2

TrueCrypt不是您的Java程序,Java沒有合理的方法可以進入另一個程序的對話框來閱讀消息。

getErrorStream()會工作,如果TrueCrypt輸出一個文本到它的標準錯誤,但因爲它有一個對話框顯示用戶沒有理由這樣做。

如果TrueCrypt失敗,可能會返回非0退出狀態,您可以使用Runtime.getRuntime().exec("TrueCrypt.exe")等待結果進程完成(使用Process.waitFor()),然後檢查退出狀態。但是,您仍然需要有人(或其他人)爲您點擊Ok按鈕。

0

Truecrypt的源代碼可用,因此您可以修改它以輸出到stdout/stderr。