類的加載順序及靜態代碼塊的執行時機

寫程序遇到個問題,找了很久找到的問題;
在工具類裏用靜態代碼塊加載了 log4j的配置文件,代碼如下:

public class Constants {
    static {
        //加載log4j配置文件
        PropertyConfigurator.configure(SYSDIR + "/log4j.properties" );
    }}

問題:日誌一直無法記錄 加載不到配置文件
誤區:記得說靜態代碼塊是在類加載的時候被執行,這個類已經用了,靜態代碼塊應該被執行了。
解決:後來發現儘管用了類裏的屬性,但是靜態代碼塊是在類被初始化的時候才執行,並不是加載的時候。
一個類的運行分爲以下步驟:

1.裝載
2.連接
3.初始化(**static塊被加載 且只加載一次**)

參考博客:http://www.cnblogs.com/ivanfu/archive/2012/02/12/2347817.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章