雖然我以前的工作問題,Java靜態VS常規對象
Java Jar Class Not Found Exception
我發現了一些奇怪的。無法找到的類是從main引用的。現在,如果我嘗試像
系統托盤托盤=新的系統托盤創建類的實例();
我得到一個類未發現異常,當我嘗試運行應用程序,但如果我創建它像
靜態系統托盤托盤=新的系統托盤();
它被加載沒有問題報告。
我想知道是否有人知道這是爲什麼?
這應該沒有關係的類路徑,因爲沒有外部depencies和應用程序包含在一個罐子裏。
雖然我以前的工作問題,Java靜態VS常規對象
Java Jar Class Not Found Exception
我發現了一些奇怪的。無法找到的類是從main引用的。現在,如果我嘗試像
系統托盤托盤=新的系統托盤創建類的實例();
我得到一個類未發現異常,當我嘗試運行應用程序,但如果我創建它像
靜態系統托盤托盤=新的系統托盤();
它被加載沒有問題報告。
我想知道是否有人知道這是爲什麼?
這應該沒有關係的類路徑,因爲沒有外部depencies和應用程序包含在一個罐子裏。
,你能否告訴我們實際的代碼,或者,如果它太大嘗試重現錯誤在一個較小的例子嗎?
可以解釋這樣做的唯一的事情是靜態參考是主要的類之外,因此不實際加載,直到它在首次訪問定義的類。
你真的訪問靜態字段嗎?我不記得了,但我認爲JVM是自由地運行靜態初始化懶(頭等艙引用或東西。
靜態和第一種方法之間的唯一區別是它們存儲在調用類的方式,當正如Michael Borgwardt所說,SysTray的構造函數被調用。 – Javache 2009-06-07 09:12:48