簡而言之,我發現我必須在沒有「-XstartOnFirstThread」的情況下啓動我的Java應用程序。但是,Eclipse將這個參數提供給通過Eclipse啓動的任何Java應用程序(請參閱以調試模式運行的應用程序的屬性)。如何刪除Eclipse提供的默認命令行參數?
我看不到這些默認參數來自哪裏以及如何調整或刪除它們。 「運行配置」中的參數字段爲空,並且當前JRE的默認參數字段也爲空(可以通過Properties - > Java - > Installed JREs - > Edit找到)。
任何幫助,將不勝感激!
長篇小說:當啓動一個幾乎沒有邏輯的基於Swing的應用程序時,我得到了錯誤*** __NSAutoreleaseNoPool(): Object 0x100166860 of class NSConcreteMapTableValueEnumerator autoreleased with no pool in place - just leaking
。我知道應用程序在Windows和Linux下運行良好,所以它不是代碼中的錯誤。
由於應用程序的啓動並非無關緊要,所以出現錯誤時我沒有問題。但是,我無法與窗口互動。這意味着我無法專注於它(當我將它帶入焦點時它會自動移動到背景),並且我無法單擊任何按鈕或菜單。
網絡一個小時左右的挖掘後,我發現:
- 這是SWT和AWT在同一時間運行的問題(AWT將掛起加載如果SWT加載)
- 這問題只從日食開始時,通過控制檯啓動應用程序(不帶參數),一切都正常運行時
- 錯時線程使用(所提到的
-XstartOnFirstThread
和-XstartOnSecondThread
參數)發生此問題
現在我接近我的目標,因爲我知道我必須用-XstartOnSecondThread
(從控制檯測試 - 應用程序在第二個線程上正常運行並在第一個線程上拋出發佈的錯誤)替換-XstartOnFirstThread
。現在我只需要知道如何刪除默認參數,該參數提供給通過Eclipse啓動的任何Java應用程序。
再次感謝!
編輯︰像提到的問題發生,由於-XstartOnFirstThread
參數。然而,解決方案並不是去除該參數(不可能,請參閱接受的答案):解決方案是從類路徑中刪除swt.jar
。
這是由於當swt.jar
位於類路徑中時,Eclipse會追加此參數。加載庫會導致所描述的問題,即使它未被使用。
非常感謝。這個錯誤報告幫助我弄清楚,當'swt.jar'在類路徑中時,'-XstartOnFirstThread'會自動附加,導致所描述的錯誤行爲。我碰巧在項目中有'swt.jar',因爲在我們決定使用Swing之前有人試過了。從引用的庫中刪除它解決了我的問題。 :) – 2011-05-03 13:55:53