我是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);
}
}
请告诉我我做错了什么。
答案 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());