Запущенный процессор выдает предупреждение о дублирующихся классах

#java #annotations #compilation #javac

#java #аннотации #Сборник #javac

Вопрос:

После запуска javac с выбранным некоторым процессором я получаю сгенерированные соответствующие исходные файлы. К сожалению, каждый раз, когда я перезапускаю процесс, я вижу предупреждения о duplicate class: com..... (одно обрабатывается).

Это не приводит к сбою задачи ant, так что это не настоящая проблема, но я был бы рад избавиться от сообщения. Как я могу это сделать?

Я в основном запускаю:

 JavaFileObject jfo = environment.getFiler().createSourceFile(somepackage   "."   myType.getSimpleName()   "Generated", myType);
Writer writer = jfo.openWriter();
generateSomeOtherClass(writer, myTypeElement);
writer.close();
  

Ответ №1:

Интересно, связано ли это с этой ошибкой в javac, которая должна быть исправлена в Java 7? Компилятор выдает свои ошибки раньше, чем запускает процессоры аннотаций, которые в конечном итоге делают ошибки не совсем ошибками, и в конце концов все получается.

На самом деле мы написали пользовательскую задачу Ant, которая расширяет обычную задачу Ant javac, переопределяет различные методы log () и пытается отключить ошибки, которые, вероятно, будут ложными, после завершения всей обработки аннотаций. Я бы опубликовал код, но, честно говоря, он очень уродливый, и я бы предпочел не показывать его миру… Множество больших корявых регулярных выражений, и это ужасно хрупко…