посмотрите на документацию Spring Ресурс
также, когда вы запускаете свое приложение из IDE, ваше приложение не архивируется в jar и, следовательно, вы можете получить доступ к файлампросто через путь , но когда вы запускаете свое приложение из архива jar java -jar my.jar
, вы должны искать свой файл в classpath, но вы также можете найти файлы вне вашего запущенного архива jar
помните, что файлы из каталога test не попадают в архив jar, эти файлы и классы в каталоге test будут доступны только во время выполнения тестов до создания архива jar
из документации Spring Boot
"classpath: com / myapp / config.xml" => Загружен из файла classpath
": /data/config.xml"=> Загруженный как URL, из файловой системы
также вы можете использовать ClassPathResource без префикса classpath:
и file:
, например, выесть двафайлы:
+-src
| +-main
| | +-java
| | | +-com
| | | | +-example
| | | | | +-app
| | | | | | +-MyApp.java
| | +-resources
| | | +-foo.json
| | | +-my-folder
| | | | +-bar.json
с ClassPathResource вы найдете файлы при запуске из IDE и из архива jar
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp, args);
ClassPathResource fooClassPathResource = new ClassPathResource("foo.json");
System.out.println(fooClassPathResource.exists());
ClassPathResource barClassPathResource = new ClassPathResource("my-folder/bar.json");
System.out.println(barClassPathResource.exists());
}
}
консольный вывод:
true
true