我正在尝试追踪警告的来源:
warning: Cannot find annotation method 'itemFieldName()' in type 'com.thoughtworks.xstream.annotations.XStreamImplicit'
相关代码为:
@XStreamAlias("things")
@XStreamImplicit(itemFieldName = "things")
private List<Thing> things;
查看 XStream JAR,我看到:
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target({java.lang.annotation.ElementType.FIELD})
public static @interface XStreamImplicit {
java.lang.String itemFieldName() default "";
}
所以我不确定为什么会收到警告。它似乎没有引起问题,但我在编译器输出中得到了一堆这些,我想整理它们。
编辑:做了更多的挖掘,发现了这个:http: //java.dzone.com/articles/when-good-annotations-go-bad看看“Fabrizio”的评论
嗯....也许我也很着急回答,我不太明白...但是AFAIK当你编译了一个用A注释的类C1时,你可以把C1放在编译中(并运行) C2 的类路径,无需将 A 放入 C2 类路径。您只会收到警告,而 A 会被忽略(因为这样做是正确的:注释仅在特定上下文中有意义,而在 C2 上下文中,A 是无意义的)。
我刚刚仔细检查,针对包含 javax.persistence 注释的 JAR 编译示例类 X(但没有将 jpa.jar 放在编译器类路径中):
istral:/tmp> javac -classpath it-tidalwave-catalog.jar X.java it/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence:CategoryPB.class):警告:找不到注释方法' 'javax.persistence.Table' 类型中的名称()':找不到 javax.persistence.Table 的类文件/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence:CategoryPB.class):警告:在“javax.persistence.Column”类型中找不到注释方法“length()”:找不到 javax.persistence.Column 的类文件/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence: CategoryPB.class):警告:在“javax.persistence.Column”类型中找不到注释方法“name()”
等等...只是警告,编译成功。
所以我认为,这只是一个注释/类路径问题。