spring 类路径资源中的相对路径

Posted

技术标签:

【中文标题】spring 类路径资源中的相对路径【英文标题】:Relative paths in spring classpath resource 【发布时间】:2010-12-08 17:40:48 【问题描述】:

我有一堆 spring 配置文件,所有这些文件都位于各种子包的 META-INF 目录下。我一直在使用如下导入...

  <import resource="../database/schema.xml"/>

所以是源文件的相对路径。当我在 jar 文件之外使用本地构建时,这可以正常工作。但是,当我将所有内容打包在一个 jar 中时,我会收到一个错误,即它无法解析 URL 资源。如果我将上面的内容更改为绝对路径(使用类路径:),那么它工作正常。

当配置打包在 jar 中时,有什么方法可以使用带有“..”的相对路径,或者我是否仅限于降序相对路径和绝对路径?

【问题讨论】:

【参考方案1】:

一个简短的补充:如果你想从一个 jar 访问资源,它应该是:

<import resource="classpath*:database/schema.xml"/>

【讨论】:

阿星!这就是我所缺少的。【参考方案2】:
<import resource="classpath:database/schema.xml"/>

【讨论】:

它需要是 但这不起作用。 嗯...你必须在 META-INF 中有它? 不一定,但我需要将它打包在 jar 中,以便 jar 的用户使用它来获取配置。 我的 jars 结构如下所示:src/main/java/ - 代码 src/main/resources/ - 配置文件(包括 spring)【参考方案3】:

在我的项目中运行良好的是 app-servlet.xml 中的以下几行:

<!-- Database Configuration -->
<import resource="classpath*:/database/DataSource.xml"/>
<import resource="classpath*:/database/Hibernate.xml"/>

如果它可以帮助你...

【讨论】:

以上是关于spring 类路径资源中的相对路径的主要内容,如果未能解决你的问题,请参考以下文章

Vue项目打包后的资源引用如何使用相对路径

8 -- 深入使用Spring -- 3...1 Resource实现类ClassPathResource

如何在 Play Framework 2.0 中使用相对路径访问资源文件?

Java路径问题终于解决方式—可定位全部资源的相对路径寻址

在WPF里面如何引用相对路径(非资源)?

在 Cocoa/C++ 中使用相对路径加载资源