期間我有一個java程序開始以下列方式支持JMX支持另一個Java進程處理JVM拋出的異常初始化
java -Dcom.sun.management.jmxremote.port=8088 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar app.jar
我的問題是,如果8088端口在使用中,衍生進程的JVM會拋出BindException並且JVM將正常退出。由於綁定異常,我無法向流程報告產生的進程未啓動。如何捕獲/處理由JVM拋出的BindException,以便生成的進程可以執行System.exit(VALID_ERROR_CODE)?即使在任何控件傳遞給用戶代碼之前,這種異常都會發生,所以我想不可能在用戶代碼中處理它。
任何想法如何處理這個用例?
是否記錄到stderr(System.err)?如果是這樣,您可以讓啓動過程查找並報告錯誤。 – Bill 2012-01-05 00:35:41
如果我沒有記錯,由於這個BindException你的jvm不應該在第一個地方開始,那麼爲什麼你需要調用System.exit(...)? – kosa 2012-01-05 05:44:23