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

what is the starting path for relative path file imports in spring

我正在尝试从 jar 文件外部导入 spring config.xml。有一个注释配置 class 使导入到配置

@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

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

如果文件在 jar 之外,您必须提供文件的绝对路径。

例如

@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 {
   ...
}

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