【发布时间】:2014-07-26 18:41:15
【问题描述】:
我正在学习在我的 Java Web 应用程序中使用 Hibernate。我有以下 sessionFactory 以配置我的 hibernate.cfg.xml 文件的位置开始,但它仍然抱怨:resources/hibernate.cfg.xml not found
“resources”文件夹是我在java项目中“src”文件夹的子目录。
public class HibernateUtil
{
private static final SessionFactory sessionFactory = new Configuration().configure("resources/hibernate.cfg.xml").buildSessionFactory();
public static void main(String[] args)
{
Session session = sessionFactory.getCurrentSession();
Transaction tx = session.beginTransaction();
Book book1 = new Book("John Wright", "Unknown Title");
session.save(book1);
tx.commit();
System.out.println("Book committed: book title: " + book1.getTitle() + ", author is: " + book1.getAuthor());
sessionFactory.close();
}
}
我在 pom.xml 中使用的休眠依赖项如下,但 intelliJ 通过突出显示“删除线”警告 buildSessionFactory() 方法已弃用
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
我也在最底部发布来自我的 i 的错误消息。出了什么问题?谢谢
10:43:12.737 [main] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
10:43:12.746 [main] INFO org.hibernate.Version - HHH000412: Hibernate Core {4.3.1.Final}
10:43:12.747 [main] INFO org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
10:43:12.749 [main] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116)
Caused by: org.hibernate.HibernateException: resources/hibernate.cfg.xml not found
at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:173)
at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2093)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2074)
at persistence.HibernateUtil.<clinit>(HibernateUtil.java:14)
... 3 more
10:43:12.763 [main] INFO org.hibernate.cfg.Configuration - HHH000043: Configuring from resource: resources/hibernate.cfg.xml
10:43:12.763 [main] INFO org.hibernate.cfg.Configuration - HHH000040: Configuration resource: resources/hibernate.cfg.xml
Process finished with exit code 1
【问题讨论】:
-
只是为了确保 hibernate.cfg.xml 在 src/main/resources 中? Maven 的项目结构非常特别...
-
不,它是 src/resources,但即使我将资源移动到 src/main,同样的错误仍然存在
-
您是否设置了 Maven 以将其包含在最终构建中?通常,Maven 为所有 java 文件提供 src/main/java,为所有其他文件提供 src/main/resources。有了这种结构,Maven 会自动知道所有东西在哪里以及它们都需要包含在内。此外,如果您将其放在 src/main/resources 中,则不会将其指定为 .configure("resources/hibernate.cfg.xml") 而是指定为 .configure("hibernate.cfg.xml") 除非您创建文件夹在资源文件夹下。
-
仍然不能使用 .configure("hibernate.cfg.xml"),谢谢
-
即使在将文件移动到 src/main/resources 之后?
标签: java hibernate configuration persistence