У меня была такая же проблема, когда я использовал Jdeveloper 12.2.1.0.0 и интегрировал Weblogic с включенной функцией быстрой замены.
если вы посмотрите на исходный код ( github ), вы увидите, что выдается исключение, если тип не является аннотацией или реализует более одного интерфейса или не реализует JavaИнтерфейс аннотации:
Class<?> type = MyAnnotation.class;
System.out.println("type.isAnnotation() " + type.isAnnotation());
System.out.println("type.getInterfaces().length " + type.getInterfaces().length);
for (Class<?> superType : type.getInterfaces()) {
System.out.println("type.getInterfaces()[i] " + superType);
}
Вывод:
type.isAnnotation() true
type.getInterfaces().length 2
type.getInterfaces()[i] interface java.lang.annotation.Annotation
type.getInterfaces()[i] interface com.bea.wls.redef.Redefinable // << ??????
Как оказалось, к аннотации добавлен еще один интерфейс.Я не нашел информации конкретно о com.bea.wls.redef.Redefinable.После небольшого поиска я понял, что пакет com.bea.wls.redef используется функцией быстрой замены.
Я вижу 2 решения:
ОтключитьФункция быстрой замены.
Переместите все пользовательские аннотации в отдельную банку.Это то, что я сделал.
Возможно, есть способ отключить упаковку для комментариев.Но я не нашел его.