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应该在根目录中吗?
/src/main/resources在您构建的项目中没有,这就是maven在构建之前保存文件的地方.在构建项目时(我假设您正在构建一个.jar-artifact)maven将执行以下操作:
.java文件src/main/java将被编译为.class文件,并将被移动jar到其包对应的子目录中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中删除参数.