运行为可执行jar时找不到hibernate.cfg.xml

时间:2016-11-25 10:00:41

标签: java eclipse hibernate jar executable-jar

我是Hibernate的新手。 当我使用Eclipse运行我的Hibernate程序时,它能够找到 hibernate.cfg.xml 文件。 我将该文件放入 src / main / resources 文件夹中。 但是当我创建可执行jar 并运行我的程序时 java -jar SQ.jar 它给了我以下错误

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.moodys.sonarqube.ExtractSQData.HibernateUtil.buildSessionFactory(HibernateUtil.java:20)
    at com.moodys.sonarqube.ExtractSQData.HibernateUtil.<clinit>(HibernateUtil.java:9)
    at com.moodys.sonarqube.ExtractSQData.SQ.getProjectDB(SQ.java:266)
    at com.moodys.sonarqube.ExtractSQData.SQ.extractSQDataToDB(SQ.java:76)
    at com.moodys.sonarqube.ExtractSQData.SQ.main(SQ.java:59)
Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147)
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1405)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1427)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
    at com.moodys.sonarqube.ExtractSQData.HibernateUtil.buildSessionFactory(HibernateUtil.java:14)
    ... 4 more

以下是我加载 hibernate.cfg.xml 文件的代码

private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new AnnotationConfiguration().configure().buildSessionFactory();

        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

请告诉我我做错了什么。

2 个答案:

答案 0 :(得分:0)

您可以在配置时提供完整路径。 你可以试试这个。

return new AnnotationConfiguration().configure("/resources/hibernate.cfg.xml").buildSessionFactory();

or

return new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();

答案 1 :(得分:0)

如果您使用的是hibernate 4.3 +

,也可以试试这个
configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");

StandardServiceRegistryBuilder serviceBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(serviceBuilder.build());