仅在从JAR运行时才能找到Hibernate Mappings

时间:2012-01-25 14:26:32

标签: java hibernate maven jar maven-assembly-plugin

我的项目位于我的 src / main / resources 我有两个映射文件。

Foo.hbm.xml Bar.hbm.xml

从eclipse运行我的主类时,一切正常。使用 maven assembly plugin 导出到jar文件时,由于缺少映射文件,我无法创建会话工厂。错误:

Exception in thread "main" org.hibernate.MappingException: Resource: Foo.hbm.xml not found 

我没有使用spring altough我也试过Spring而且我有同样的问题Spring的会话工厂从jar运行时找不到映射。我的实施如下。代码:

    Configuration hibernateConfig = new Configuration();
    hibernateConfig.configure("hibernate.cfg.xml");
    hibernateConfig.addResource("Foo.hbm.xml");
    hibernateConfig.addResource("Bar.hbm.xml");

    hibernateConfig.setProperty("hibernate.connection.url", conf.dbUrl);
    hibernateConfig.setProperty("hibernate.connection.username", conf.dbUsername);
    hibernateConfig.setProperty("hibernate.connection.password", conf.dbPassword);

我还尝试通过 hibernate.cfg.xml 添加映射但是它没有工作相同的结果,在eclipse中工作但在使用runnable JAR时却没有。我的maven assemly配置正在关注。

        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <descriptorRefs>
              <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
            <archive>
              <manifest>
                <mainClass>com.app.EntryPoint</mainClass>
              </manifest>
            </archive>
          </configuration>
        </plugin>

我使用 mvn assembly:assembly 创建JAR,当我打开它时,映射存在于JAR的根目录(/)中。

修改

在看完所有东西6小时后,Facepalm时刻。错误地拼写了 Foo.hbm.xml ,因此映射称为MOTAccounts.hbm.xml,我使用了MotAccounts.hbm.xml。

让我摆脱这种可能性的原因是,一切都在eclipse中起作用,但它在JAR中没有起作用。就像我说的脸掌时刻。

0 个答案:

没有答案