2014-03-03 37 views
0

我试图对Hibernate的测试运行简单的测试,但它失败:HibernateException的:不是的hibernate.cfg.xml在根文件夹中找到

public class TestService { 
    static { 
     PropertyConfigurator.configure("log4j.properties"); 
    } 
    public static void main(String[] args) { 
     String mail = "[email protected]"; 
     User user = new UserService().getByEmail(mail); 
     System.out.println("user info: " + user.toString()); 
     System.out.println("\nTHE END"); 
    } 
} 

这里是输出:

02:24:53,166 ERROR main HibernateUtil:<clinit>:24 - org.hibernate.HibernateException: hibernate.cfg.xml not found 
Exception in thread "main" java.lang.NullPointerException 
    at com.lelyak.controller.dao.ElementDAOImpl.getAllElements(ElementDAOImpl.java:76) 
    at com.lelyak.controller.service.UserService.getListOfObjects(UserService.java:39) 
    at com.lelyak.controller.service.UserService.getByEmail(UserService.java:52) 
    at com.lelyak.application.TestService.main(TestService.java:17) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

的HibernateUtil

public class HibernateUtil { 
    private static Logger log = Logger.getLogger(HibernateUtil.class); 
    private static SessionFactory sessionFactory = null; 
    private static final Configuration configuration = new Configuration(); 

    static { 
     try { 
      configuration.configure("hibernate.cfg.xml"); 
      sessionFactory = configuration.buildSessionFactory(new ServiceRegistryBuilder() 
        .applySettings(configuration.getProperties()) 
        .buildServiceRegistry()); 
     } catch (Exception e) { 
      log.error(e); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 
} 

cfg文件位于项目文件夹:

enter image description here

log4j.properties在相同的位置是可读的。 cfg文件有什么不对?

有什么建议吗?

+0

尝试'/ hibernate.cfg.xml' – Rembo

回答

0

你想阅读本文件夹WebContent文件,你可以尝试使用喜欢这个

InputStream st= getServletContext().getResourceAsStream("/hibernate.cfg.xml"); 

但我建议把hibernate.cfg.xml下src和你的代码

configuration.configure("hibernate.cfg.xml"); 

会好。

0

Hibernate从类路径而不是文件系统中抽取它hibernate.cfg.xml。所以,如果你把它放在srcsrc\Java取决于你的结构它应该工作。

0

你需要把你的hibernate.cfg.xml下的src文件夹,并在你的代码,你可以做到这一点

configuration.configure();