#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 () и пытается отключить ошибки, которые, вероятно, будут ложными, после завершения всей обработки аннотаций. Я бы опубликовал код, но, честно говоря, он очень уродливый, и я бы предпочел не показывать его миру… Множество больших корявых регулярных выражений, и это ужасно хрупко…