У меня есть компонент конфигурации.Впрыск ресурсов в Spring Boot не работает с градиентом
@Component
public class Config {
@Value("classpath:${app.file.name.srgbicc}")
public Resource icc;
@PostConstruct
void init(){
try {
tempdir = Files.createTempDir();
newIcc = copyIccFileToTemp();
}catch (IOException e){
throw new RuntimeException(e);
}
}
private File copyIccFileToTemp() throws IOException {
File tempIcc = new File(tempdir, icc.getFilename());
FileUtils.copyFile(icc.getFile(),tempIcc);
return tempIcc;
}
}
На icc.getFile()
есть является FileNotFoundException
application.properties
app.file.name.srgbicc = sRGB.icc
я посмотрел в моем пути к классам и нашли следующую ситуацию:
build/classes/main (no icc file)
build/resources/main (icc file, application.properties)
При распечатке моего пути к классам во время запуска приложения я нашел только ...myApp/build/classes/main
. Нет ../build/resources/main
или ../src/main/resources
записей.
Так что мне было интересно, почему ресурсы не на пути к классам? согласно http://docs.spring.io/spring-boot/docs/1.1.5.RELEASE/reference/htmlsingle/#build-tool-plugins-gradle-running-applications это должно быть.
Конечно, если я поместил файл icc в build/classes/main
, все его работало, как ожидалось, но оно не должно быть там. правильно?
Я попытался запустить приложение с gradle run
или gradle bootRun
в intellij Я использую static main
. Хорошо, что приложение постоянно не зависит от того, как я его запускаю.
Моего макет проекта
myApp
src
main
java
pkg
Config.java
resources
sRGB.icc
application.properties
Для справки: IntelliJ 13 весны-ботинки 1.1.5 Fgradle 2,0
Update Вот урезанный пример моего кода https://gist.github.com/Vad1mo/bb5d23ca251341236fbd
Я удалил @PostConstruct в config.init и запустил приложение с помощью построения градиентов, все тесты ss, когда я вернусь из intellij, тесты терпят неудачу. это странно, что я знаю другое поведение
Как именно вы запускаете приложение (Gradle или IntelliJ) и где именно вы разместили файл ресурсов? Похоже, что что-то неправильно сконфигурировано, так как обработанный файл ресурсов должен идти в 'build/resources/main', а не' build/classes/resources/main'. –
@PeterNiederwieser У меня была ошибка копирования и вставки при создании вопроса. Мой путь: 'build/resources/main' – Vadimo
Как именно вы запускаете приложение (Gradle или IntelliJ) и где именно вы разместили файл ресурсов? –