我们将Spring 4.0.1.RELEASE与jdk6结合使用(这是固定的)。
当然,我们使用@PropertySource
注释在Java中完成了配置。当我们使用gradle编译项目时,这会导致恼人的警告消息:
有机\ springframework的\上下文\注释\ PropertySource.class(ORG \ springframework的\上下文\注解:PropertySource.class): 警告:无法在类型中找到annotat ion方法'value()' 'java.lang.annotation.Repeatable':用于的类文件 找不到java.lang.annotation.Repeatable
这是由于使用not(在jdk6中)现有的Repeatable类引起的,我很高兴它只是一个警告。 我喜欢gradle的干净输出,这很烦人,因为它可能会混淆其他“真正的”警告(比如checkstyle ......)。
也许有人遇到同样的问题,并且针对这种情况得到了一个(不那么多的黑客)解决方案。我只想再次看到干净的输出。
答案 0 :(得分:28)
我认为问题在于 Spring 4 ,他们使用@Repeatable
注释,这只是在 Java中引入的8 强>
因此,如果您不使用Java 8,您将继续看到此问题,至少在此问题得到修复之前。
BTW ,这也阻止了在旧版JDK中使用 @Scheduled
注释而不是Java 8.我希望它很快就会修复。
答案 1 :(得分:9)
仅供记录:使用
@PropertySources(@PropertySource("classpath:path/to/config"))
摆脱异常。
答案 2 :(得分:1)
我想如果您只是想摆脱警告,您可以使用自定义记录器实现此目的:http://www.gradle.org/docs/current/userguide/logging.html
我会检查当前的实现,并将其包含在过滤掉您要忽略的警告的内容中,并将其他所有内容保持不变。
答案 3 :(得分:0)
解决Java 8下面的警告的解决方法是使用以下方法而不是@Scheduled注释:
@PostConstruct
public void setupTaskScheduler() throws FileNotFoundException {
taskScheduler = new ConcurrentTaskScheduler();
taskScheduler.schedule(new Runnable(...), new CronTrigger("0 0 * * * *"));
}