2009-06-07 62 views
0

雖然我以前的工作問題,Java靜態VS常規對象

Java Jar Class Not Found Exception

我發現了一些奇怪的。無法找到的類是從main引用的。現在,如果我嘗試像

系統托盤托盤=新的系統托盤創建類的實例();

我得到一個類未發現異常,當我嘗試運行應用程序,但如果我創建它像

靜態系統托盤托盤=新的系統托盤();

它被加載沒有問題報告。

我想知道是否有人知道這是爲什麼?

這應該沒有關係的類路徑,因爲沒有外部depencies和應用程序包含在一個罐子裏。

+0

靜態和第一種方法之間的唯一區別是它們存儲在調用類的方式,當正如Michael Borgwardt所說,SysTray的構造函數被調用。 – Javache 2009-06-07 09:12:48

回答

3

,你能否告訴我們實際的代碼,或者,如果它太大嘗試重現錯誤在一個較小的例子嗎?

可以解釋這樣做的唯一的事情是靜態參考是主要的類之外,因此不實際加載,直到它在首次訪問定義的類。

0

你真的訪問靜態字段嗎?我不記得了,但我認爲JVM是自由地運行靜態初始化懶(頭等艙引用或東西。