在现有java项目

时间:2016-03-16 14:48:01

标签: java eclipse hibernate

我尝试在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");

3 个答案:

答案 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;
    }