spring中相对路径文件导入的起始路径是什么

时间:2017-01-10 15:51:19

标签: java spring configuration relative-path

我试图从jar文件外部导入spring config.xml。有一个注释配置类,可以导入到配置

@Configuration
@ImportResource("file:config.xml")
public class SpringConfig {
   ...
}

来自spring的日志消息表明它找不到config.xml。但是他们没有说它在搜索这个config.xml的路径是什么。

Caused by: java.io.FileNotFoundException: config.xml (The system cannot find the file specified)

在开发环境中

src\main\java\
|__com.packagewithclasses
|__config.xml
|__log4j.xml

在实时环境中

folder_holding_jars_and_configs
|__executable_jar_file.jar
|__config.xml
|__log4j.xml

我已经尝试了文档,谷歌,一些通配符,日志等。没有运气。什么是在jar文件外配置相对路径的spring的起始路径?

1 个答案:

答案 0 :(得分:1)

如果文件在jar之外,你必须给出文件的绝对路径。

e.g。

@Configuration
@ImportResource("file:/opt/proj/config.xml")
public class SpringConfig {
   ...
}

修改:

除此之外,您可以将{XML}文件的相对路径放在MANIFEST.MF文件中。由于您的jar和XML位于同一目录中,因此您可以在MANIFEST.MF

中添加以下行
Class-Path: .

MANIFEST.MF在文件末尾需要一个空行。

现在您可以使用如下的xml文件。

@Configuration
@ImportResource("file:/config.xml")
public class SpringConfig {
   ...
}

MENIFEST.MF的位置将是`src / main / resources / META-INF / MANIFEST.MF'对于maven项目。