类的加载顺序及静态代码块的执行时机

写程序遇到个问题,找了很久找到的问题;
在工具类里用静态代码块加载了 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

你可能感兴趣的:(数据库)