在 Spring 引导中从类路径加载嵌套资源
Loading nested resource from the classpath in Spring Boot
Spring 启动 2.1.5.RELEASE 这里。我正在尝试从 src/main/resources/images
目录加载资源。迄今为止我最好的尝试是:
URL url = getClass().getResource("classpath:images/my_logo.png");
if (url == null) {
log.warn("Hmmm not found...");
} else {
log.info("Found it!");
}
在运行时警告“Hmmm not found...”正在打印,但文件绝对位于src/main/resources/images/my_logo.png
.我哪里出错了?
由于您已经在使用 Spring,请尝试使用他们的资源加载器之一
URL url = new PathMatchingResourcePatternResolver( null ).getResource( "classpath:/images/my_logo.png" ).getURL();
注意:我在路径中添加了一个前导斜杠。
编辑:我查看了@duffymo 的评论,它是正确的。前导斜杠不是必需的。
在Spring中还有另一种获取资源的方法,但是ResourceUtils Javadoc明确指出class主要供内部使用。
String file = ResourceUtils.getFile("images/my_logo.png").getAbsolutePath();
或使用 ClassPathResource
URL clsPath = new ClassPathResource("images/my_logo.png").getURL();
Spring 启动 2.1.5.RELEASE 这里。我正在尝试从 src/main/resources/images
目录加载资源。迄今为止我最好的尝试是:
URL url = getClass().getResource("classpath:images/my_logo.png");
if (url == null) {
log.warn("Hmmm not found...");
} else {
log.info("Found it!");
}
在运行时警告“Hmmm not found...”正在打印,但文件绝对位于src/main/resources/images/my_logo.png
.我哪里出错了?
由于您已经在使用 Spring,请尝试使用他们的资源加载器之一
URL url = new PathMatchingResourcePatternResolver( null ).getResource( "classpath:/images/my_logo.png" ).getURL();
注意:我在路径中添加了一个前导斜杠。
编辑:我查看了@duffymo 的评论,它是正确的。前导斜杠不是必需的。
在Spring中还有另一种获取资源的方法,但是ResourceUtils Javadoc明确指出class主要供内部使用。
String file = ResourceUtils.getFile("images/my_logo.png").getAbsolutePath();
或使用 ClassPathResource
URL clsPath = new ClassPathResource("images/my_logo.png").getURL();