2016-02-07 24 views
0

有時在更新我的jar之後。程序不會在某些平臺上啓動(我的意思是Win/Unix/Mac)。我想知道爲什麼。如果你從命令行/終端運行.jar,你會得到一個堆棧跟蹤並知道錯誤。但用戶並不總是知道如何使用cmd /終端。如何運行.jar文件將輸出保存到所有操作系統上的文件?

所以我的問題是:如何從給定系統上的默認cmd啓動.jar文件並將輸出保存到文件?

+2

如何使用一些標準的測井工具?例如Log4j(http://logging.apache.org/log4j/2.x/)或Slf4j(http://www.slf4j.org/)? –

+0

@JohnnyGreenwood我知道這件事,你可能是對的。我即將完全實現它,但現在我正在尋找一些臨時和快速的解決方案。 – alex

+0

@JohnnyGreenwood或者,這個標準日誌實際上是一個標準:[java.util.logging](https://docs.oracle.com/javase/8/docs/api/java/util/logging/package-summary的.html)。 – VGR

回答

1

在主文件包的內容是這樣並轉儲堆棧跟蹤到一個文件中(異常處理保持在最低限度,以舉例的重要行):

try{ 
//..main code here 
} catch (Exception e) 
{ 
    FileWriter fw = new FileWriter ("run.log", true); 
    PrintWriter pw = new PrintWriter (fw); 
    e.printStackTrace (pw); 
    pw.close(); 
} 

這將轉儲整個堆棧跟蹤到一個文件無論拋出的Exception和用戶所在的操作系統如何。您也可以使用Throwable而不是Exception。

+0

如果程序由於某些JVM問題而無法啓動會怎麼樣?我想捕捉用戶雙擊.jar和我的程序的main()開始執行的所有內容。 – alex

+0

@alex這本質上是不可能的跨平臺。但說實話,編寫兩個shell腳本(一個用於* nix和一個用於windows)並不是一個很大的維護負擔。總之,這個解決方案也是有其他原因的(HELLO線程)有缺陷。你想設置默認的未處理的異常處理程序。 – Voo

+0

@Voo這就是我想知道的。謝謝。 – alex

相關問題