public class TestHibernate {

private static final SessionFactory sessionFactory;

static{
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new HibernateException(e.getMessage());
}

}
}如果我不写throw new HibernateException(e.getMessage());eclipse编译private static final SessionFactory sessionFactory;这行就会报错,报错如下:
Multiple ers at this line
- The value of the field TestHibernate.sessionFactory is 
 not used
- The blank final field sessionFactory may not have been 
 initialized请高人指点下下

解决方案 »

  1.   

    private static final SessionFactory sessionFactory;
    您是来玩我们的吧,这代码能编译?final的变量不附值?
      

  2.   

    兄弟 你不知道final没有初始化 有一次赋值机会吗?
      

  3.   

    Multiple ers at this line
    - The value of the field TestHibernate.sessionFactory is 
    not used
    - The blank final field sessionFactory may not have been 
    initialized提示说的很明白,sessionFactory 没有被初始化,因为如果发生异常,而你在异常里未做任何处理,sessionFactory 就不会赋值
      

  4.   

    跟静态代码块没有任何关系,final变量必须初始化
      

  5.   


    不好意思,没有看仔细。
    我觉得是这样的,调用new Configuration().configure().buildSessionFactory();的时候如果抛出异常则不会继续执行附值,你这里蒋异常捕获了,就会导致静态final变量没有被附值的问题,这个问题好像自己没有办法处理。所以你需要继续向上一层抛出直到由编译器执行正确的操作。
      

  6.   

    static{
    try {
    sessionFactory = new Configuration().configure().buildSessionFactory();
    } catch (HibernateException e) {
    // TODO Auto-generated catch block
    //e.printStackTrace();
    //throw new HibernateException(e.getMessage());
    sessionFactory = null; //这里初始化一下
    }
      

  7.   

    这是SessionFactory可能没值的问题,不关static事
      

  8.   

    private static final SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
      

  9.   

    小绵羊解释的很清楚,static块内必须完成此成员的初始化,发生异常时sessionFactory 可能没有值
      

  10.   

    final = 只能被赋值一次如果赋值失败了,也算赋值了。
      

  11.   

    try里面不一定可以赋值成功的。final变量初始化的时候必须赋初值,可以在构造函数(所有的都要),静态代码块,代码块中赋初值(非static,只是final),你选择的是在静态代码块,但是呢,try不一定可以赋值成功,也就是说,要在运行的时候才能确定是否可以给sessionFactory赋初值。这是不行的,在编译的时候编译器就要确定是否赋初值了。