我的项目位于我的 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中没有起作用。就像我说的脸掌时刻。