在spring application.properties文件中指定resources文件夹中的文件

use*_*587 8 spring-boot

我有一个Spring Boot应用程序,该代码需要访问resources文件夹下的文件.这是我的application.properties文件:

cert.file=classpath:/resources/cert.p12
Run Code Online (Sandbox Code Playgroud)

但总是抱怨:

java.io.FileNotFoundException: classpath:/resources/cert.p12 (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我仔细检查了文件夹my_project/target/classes,以确保文件cert.p12退出.

并在代码中我试图访问该文件:

@Value("${cert.file}")
private String certFile;
....
@Bean
public Sender sender() {
    return new Sender(certFile);
}
Run Code Online (Sandbox Code Playgroud)

这个类路径究竟是什么?为什么它找不到文件?谢谢!

小智 9

类路径包括你有什么里面,你的资源目录.

尝试:

cert.file=classpath:cert.p12
Run Code Online (Sandbox Code Playgroud)

我假设你有标准的maven目录结构.

  • 它抛出了同样的错误: FileNotFoundException: classpath:cert_key.p12.I use standard maven structure (2认同)

Dom*_*omo 8

此语法不适用于普通的 FileInputStream。请改用 Spring Resourceloader。

@Autowired
private ResourceLoader resourceLoader;

@Value("${property.name}")
private String property;

File getPropertyFile(){
    return resourceLoader.getResource(property).getFile();
}
Run Code Online (Sandbox Code Playgroud)

应用程序属性

property.name=classpath:filename.txt
Run Code Online (Sandbox Code Playgroud)