Я пытаюсь отследить источник предупреждения:
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 посмотрите на комментарий от "Фабрицио"
Хм ... может быть, я слишком быстро отвечаю, и я не очень хорошо понял ... но AFAIK, когда у вас естьскомпилировав класс C1 с аннотацией A, вы можете поместить C1 в путь к классам компиляции (и запуска) для C2 без необходимости помещать A в путь класса C2. Вы получаете только предупреждения, а A игнорируется (как это правильно делать: annotationsимеют значение только в определенном контексте, а в C2 контекст A не имеет смысла).
Я просто дважды проверил, скомпилировав пример класса X с JAR, который содержит аннотации javax.persistence (но не помещая jpa.jar в компиляторе classpath):
istral: / tmp> javac -classpath it-tidalwave-catalog.jar X.java it / tidalwave / catalog / persistence / CategoryPB.class (it / tidalwave / catalog /настойчивость: CategoryPB.clзадница): предупреждение: не удается найти метод аннотации name () в типе javax.persistence.Table: файл класса для javax.persistence.Table не найден / tidalwave / catalog / persistence / CategoryPB.class (it / tidalwave /catalog / persistence: CategoryPB.class): предупреждение: не удается найти метод аннотации 'length ()' в типе 'javax.persistence.Column': файл класса для javax.persistence.Column не найден / tidalwave / catalog / persistence / CategoryPB.class (it / tidalwave / catalog / persistence: CategoryPB.class): предупреждение: не удается найти метод аннотации 'name ()' в типе 'javax.persistence.Column'
и т. д. Просто предупреждения, компиляцияуспешно.
Так что я думаю, это просто проблема аннотации / пути к классам.