Spring类路径资源中的相对路径问题

5

我有一堆spring配置文件,全部都在META-INF目录下的不同子包中。 我一直在使用类似以下的import...

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

因此,从源文件的相对路径开始。当我在一个不是jar文件中的本地构建中工作时,这很好用。但是当我将所有内容打包到一个jar文件中时,我会收到无法解析URL资源的错误。如果我将上述内容更改为绝对路径(使用classpath:),则可以正常工作。

是否有任何方法可以在打包在jar中的情况下使用带有“..”的相对路径,或者我只能使用下降的相对路径和绝对路径?

3个回答

13

简短补充:如果你想要从一个jar文件中访问资源,应该这样写:

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

1
星号!这就是我缺少的东西。 - Gerben Rampaart

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

它需要是<import resource="classpath:../database/schema.xml"/>,但这不起作用。 - Mike Q
嗯...你必须把它放在META-INF目录下吗? - Trick
1
不一定,但我需要将其打包在jar中,以便使用jar的用户可以同时获取配置。 - Mike Q
我的JAR结构如下: src/main/java/ - 代码 src/main/resources/ - 配置文件(包括Spring) - Trick

4
在我的项目中,以下代码在app-servlet.xml文件中运行良好:
<!-- Database Configuration -->
<import resource="classpath*:/database/DataSource.xml"/>
<import resource="classpath*:/database/Hibernate.xml"/>

目录

如果这有助于您...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接