我在我的应用程序开发中使用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 {
}
}
答案 0 :(得分:4)
我正在谈论的一些人告诉我静态块不会在jdk 1.7中执行但是这个文件正在执行
让我重新说一下这句话。从Java 7开始,您不能执行包含static
块但没有main
方法的类。你会得到一个错误 - “找不到主要方法”。但是,您可以使用其他类中的这些类。你当然没有直接执行HibernateUtil
课程吗?这将在您的应用程序中的其他位置用于处理SessionFactory
。
在Java 7之前,您被允许执行一个类,即使它不包含main
方法而只包含static
块。
答案 1 :(得分:-1)
我会清楚地解释一下......随意问你的怀疑...... 在以前的版本中(在jdk 1.7之前),它首先加载类文件而不是主文件。由于我们在类中声明了所有静态类,方法,变量,因此首先加载它。但后来(jdk 1.7)第一次搜索主文件。因此在最新版本中我们无法运行任何没有main的方法和类。希望这会有所帮助......