java - Spring Boot 项目作为可执行 jar 运行时找不到 Hibernate.cfg.xml

标签 java spring hibernate

我发现在设置 SessionFactory 时未找到 hibernate.cfg.xml 的问题是很常见的情况,但我的问题有些具体。我的项目在 Eclipse 中运行时工作正常,即使我移动 hibernate.cfg.xml 也是如此;我可以将其保留在源代码级别并执行以下操作:

        Configuration configuration = new Configuration();
        configuration = new Configuration();
        configuration.configure();

或者我可以将其移动到不同的位置并以这种方式定义它:

        Configuration configuration = new Configuration();
        configuration = new Configuration();
        configuration.configure("/path/to/hibernate.cfg.xml");

这两种方法都可以在 Eclipse 中使用。但是,当我构建一个可执行 jar 来在其他地方运行该应用程序时,它启动时会提示:

Initial SessionFactory creation 
failed.org.hibernate.internal.util.config.ConfigurationException: Could not 
locate cfg.xml resource [hibernate.cfg.xml]
org.hibernate.internal.util.config.ConfigurationException: Could not locate 
cfg.xml resource [hibernate.cfg.xml]

我明白(或者我认为我明白),原因是 hibernate.cfg.xml 没有包含在 jar 本身中,所以即使定义了路径,它也找不到它,但不确定如何修复它。我想如果我可以将文件放入 jar 中,那么它可能会起作用(也许类路径也需要一个条目?),但我实际上不确定该怎么做。

最佳答案

这主要取决于您是否使用框架,如果是,则使用哪个框架。如果您没有使用任何框架,那么将 hibernate.cfg.xml 文件保留在根路径中就可以了。但是由于标准化编码过程的迫切需要,框架通常期望该文件位于您的资源文件夹中。但在您的情况下,您应该提供该配置文件的路径,而不是相对于根文件夹,而是相对于整个路径。

关于java - Spring Boot 项目作为可执行 jar 运行时找不到 Hibernate.cfg.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51562929/

相关文章:

java - Android - 通用图像加载器中具有另一个 View 的 ImageView

java - NoSuchBeanDefinitionException : No unique bean of type [javax.activation.DataSource] 已定义:预期为单个 bean,但发现 0:

java - Hibernate 和 postgresql bigserial - 非顺序

java - 基本 Java 程序给出错误的输出

java - 在同一路由器上使用多个 channel

java - 如何使用 Spring MVC 返回文本文件?

mysql - 如何使用 Play、Hibernate 和 MySql 设置每个 session 的事务隔离级别

java - Hibernate Envers - 在 ValidityAuditStrategy 中支持 JDBC 批处理(allow_identifier_reuse=true)

java - Selenium 错误 : no such element: Unable to locate element on . isDisplayed() 方法

java - 配置 Swagger-UI 以获取 Spring 的 HttpSecurity Logout 端点