我尝试在existing project的子模块(ssf / samples / customcontroller)中加载hibernate.cfg.xml。对于这个项目,存在一个build.xml,可以正确地构建和部署项目。详细地说,它构建了一个包含我的CustomController.class和其他自定义* .class文件的jar文件,并将该jar文件推送到服务器上的正确目录中。如果我也把hibernate.cfg.xml文件放在我的CustomController.class文件中,我就无法通过
加载这个文件Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
答案 0 :(得分:1)
我假设您的类路径设置为src目录。然后你应该使用
Configuration cfg = new Configuration().configure("resources/hibernate.cfg.xml");
答案 1 :(得分:0)
HI尝试将hibernate.cfg.xml
文件路径作为参数传递到configure()
SessionFactory sessionFactory = new Configuration().configure(
"/ssf/samples/customcontroller/src/resources/hibernate.cfg.xml")
.buildSessionFactory();
return sessionFactory;
答案 2 :(得分:0)
查看hibernate.cfg.xml
在build文件夹中的位置(eclipse编译类)。
如果构建文件夹根目录中的hibernate.cfg.xml
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
hibernate.cfg.xml
build_folder/some_path/some_other_path/hibernate.cfg.xml
SessionFactory sessionFactory = new Configuration()
.configure("/some_path/some_other_path/hibernate.cfg.xml")
.buildSessionFactory();
你可以使用没有前导/
的路径,因为Hibernate无论如何都会删除它(它更加正确,但不清楚,因为资源的路径通常具有前导/
)
SessionFactory sessionFactory = new Configuration()
.configure("some_path/some_other_path/hibernate.cfg.xml")
.buildSessionFactory();
此代码显示Hibernate如何尝试加载hibernate.cfg.xml
public InputStream locateResourceStream(String name) {
// first we try name as a URL
try {
log.tracef( "trying via [new URL(\"%s\")]", name );
return new URL( name ).openStream();
}
catch (Exception ignore) {
}
try {
log.tracef( "trying via [ClassLoader.getResourceAsStream(\"%s\")]", name );
final InputStream stream = getAggregatedClassLoader().getResourceAsStream( name );
if ( stream != null ) {
return stream;
}
}
catch (Exception ignore) {
}
final String stripped = name.startsWith( "/" ) ? name.substring( 1 ) : null;
if ( stripped != null ) {
try {
log.tracef( "trying via [new URL(\"%s\")]", stripped );
return new URL( stripped ).openStream();
}
catch (Exception ignore) {
}
try {
log.tracef( "trying via [ClassLoader.getResourceAsStream(\"%s\")]", stripped );
final InputStream stream = getAggregatedClassLoader().getResourceAsStream( stripped );
if ( stream != null ) {
return stream;
}
}
catch (Exception ignore) {
}
}
return null;
}