Загрузчик классов вашего теста может иметь значение Id
, отличное от loader
.
Быстрый способ проверки:
...
Class idType = loader.loadClass("my.package.Id");
...
field.isAnnotationPresent(idType);
Если это работает, то у вас есть проблема с загрузчиком классов - точнее, ваш loader
не использует загрузчик вашего тестового примера. Чтобы исправить, используйте другой конструктор:
ClassLoader loader = new URLClassLoader(urls, this.getClass().getClassLoader());