Подтвердить что ты не робот

Повторяющийся не найден при использовании Spring 4 PropertySource

мы используем Spring 4.0.1.RELEASE в сочетании с jdk6 (это исправлено). Конечно, мы сделали конфигурацию на Java с использованием аннотации @PropertySource. Это приводит к раздражающему предупреждающему сообщению (сообщениям) при компиляции проекта с помощью gradle:

орг\springframework\контекст\аннотация\PropertySource.class(орг\springframework\контекст\аннотация: PropertySource.class): предупреждение: не удается найти метод annotat ion 'value()' в типе 'java.lang.annotation.Repeatable': файл класса для java.lang.annotation.Repeatable не найден.

Это вызвано использованием не существующего (в jdk6) класса Repeatable, и я рад, что это просто предупреждение. Мне нравится чистый вывод gradle, и это просто раздражает, потому что он может запутывать другие "настоящие" предупреждения (например, checkstyle...).

Возможно, кто-то столкнулся с той же проблемой и получил (не так много взлома) решение для этой ситуации. Я просто хочу снова увидеть чистый результат.

4b9b3361

Ответ 1

Я думаю, что проблема в том, что в Spring 4 они используют аннотацию @Repeatable, которая была введена только в Java 8.

Поэтому, если вы не используете Java 8, вы продолжите эту проблему, по крайней мере, до тех пор, пока эта проблема не будет исправлена.

BTW, это также предотвращает использование аннотации @Scheduled в старых JDK, чем Java 8. Надеюсь, что скоро это будет исправлено.

Ответ 3

Я думаю, если вы просто хотите избавиться от предупреждения, вы можете достичь этого с помощью настраиваемого регистратора: http://www.gradle.org/docs/current/userguide/logging.html

Я бы проверил текущую реализацию и обернул ее тем, что отфильтровывает предупреждение, которое вы хотите игнорировать, перенаправляя все остальное без изменений.

Ответ 4

Обходной путь, чтобы избавиться от предупреждения ниже Java 8, заключается в использовании следующего подхода вместо аннотации @Scheduled:

@PostConstruct
public void setupTaskScheduler() throws FileNotFoundException {
    taskScheduler = new ConcurrentTaskScheduler();

    taskScheduler.schedule(new Runnable(...), new CronTrigger("0 0 * * * *"));    
}