如何在jdk 1.7中执行此静态块

时间:2013-11-22 05:26:33

标签: java static java-7

我在我的应用程序开发中使用jdk 1.7。我正在谈论的一些人告诉我,静态块不会在jdk 1.7中执行,但是这个文件正在执行。有人可以向我解释一下吗?

package com.treamis.util;

    import javax.servlet.ServletException;
    import org.apache.struts.action.ActionServlet;
    import org.apache.struts.action.PlugIn;
    import org.apache.struts.config.ModuleConfig;
    import org.hibernate.cfg.AnnotationConfiguration;
    import org.hibernate.SessionFactory;

    public class HibernateUtil implements PlugIn {

        private static final SessionFactory sessionFactory;

        static {
            try {
                sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
            } catch (Throwable ex) {
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
        }

        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }

        @Override
        public void destroy() {
        }

        @Override
        public void init(ActionServlet servlet, ModuleConfig config) throws ServletException {
        }
    }

2 个答案:

答案 0 :(得分:4)

  

我正在谈论的一些人告诉我静态块不会在jdk 1.7中执行但是这个文件正在执行

让我重新说一下这句话。从Java 7开始,您不能执行包含static块但没有main方法的类。你会得到一个错误 - “找不到主要方法”。但是,您可以使用其他类中的这些类。你当然没有直接执行HibernateUtil课程吗?这将在您的应用程序中的其他位置用于处理SessionFactory

在Java 7之前,您被允许执行一个类,即使它不包含main方法而只包含static块。

答案 1 :(得分:-1)

我会清楚地解释一下......随意问你的怀疑...... 在以前的版本中(在jdk 1.7之前),它首先加载类文件而不是主文件。由于我们在类中声明了所有静态类,方法,变量,因此首先加载它。但后来(jdk 1.7)第一次搜索主文件。因此在最新版本中我们无法运行任何没有main的方法和类。希望这会有所帮助......