2014-08-31 3 views
1

У меня есть компонент конфигурации.Впрыск ресурсов в 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, тесты терпят неудачу. это странно, что я знаю другое поведение

+0

Как именно вы запускаете приложение (Gradle или IntelliJ) и где именно вы разместили файл ресурсов? Похоже, что что-то неправильно сконфигурировано, так как обработанный файл ресурсов должен идти в 'build/resources/main', а не' build/classes/resources/main'. –

+0

@PeterNiederwieser У меня была ошибка копирования и вставки при создании вопроса. Мой путь: 'build/resources/main' – Vadimo

+0

Как именно вы запускаете приложение (Gradle или IntelliJ) и где именно вы разместили файл ресурсов? –

ответ

0

Я решил проблему сейчас.

Что мне помогло, просто сделать простой clean build и перестроить проект в intellij. Я использовал много затмений и maven, поэтому я ожидал, что это произойдет автоматически.

 Смежные вопросы

  • Нет связанных вопросов^_^