Java - 找不到hibernate.cfg.xml文件

spe*_*f10 5 java xml mysql hibernate maven

我找到了我的hibernate.cfg.xml位置,src/main/resources/但是当我运行我的maven项目时我一直收到此错误,我也尝试将路径放到配置中这样的文件,但仍然出现错误

Configuration conf = new Configuration();  
conf.configure("/src/main/resources/hibernate.cfg.xml"); 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

当我转到项目的属性并转到Source时,我在构建路径中看到/ src/main/resources?

它也在我在eclipse中运行时运行,但是当我导出到jar时它停止工作但是我在类路径中有它,你可以看到在此输入图像描述

谢谢

编辑

这是我的eclipse项目中的目录

在此输入图像描述

然后就是我打开.jar文件时的情况

在此输入图像描述

你是说.xml应该在根目录中吗?

pie*_*t.t 7

/src/main/resources在您构建的项目中没有,这就是maven在构建之前保存文件的地方.在构建项目时(我假设您正在构建一个.jar-artifact)maven将执行以下操作:

  1. 所有.java文件src/main/java将被编译为.class文件,并将被移动jar到其包对应的子目录中
  2. 所有文件src/main/resources都将被复制到的根目录jar-file

所以你的项目中的这个文件结构:

src
|
+-main
   |
   +-java
   |   |
   |   +- mypackage
   |          |
   |          +- MyClass.java
   |
   +-resources
         |
         +- hibernate.cfg.xml
Run Code Online (Sandbox Code Playgroud)

最终会.jar-file像你这样:

project.jar
|
+- mypackage
|     |
|     +- MyClass.class
|
+- hibernate.cfg.xml
Run Code Online (Sandbox Code Playgroud)

关键点在于:所有文件/src/main/resources都将在您构建的项目的类路径中结束.但是,由于您的配置文件已命名hibernate.cfg.xml并位于类路径上,因此您应该可以

Configuration conf = new Configuration(); 
conf.configure();
Run Code Online (Sandbox Code Playgroud)

注意,它configure()被称为wthout参数,因此这意味着"查找hibernate.cfg.xml在当前类路径上调用的文件".所以尝试从configure-call中删除参数.