2013-08-15 2 views
3

Я использую библиотеку org.reflections для обнаружения некоторых классов, которые аннотируются в моем проекте. Когда я запускаю проект из eclipse, найдены аннотированные классы.Java-аннотации не найдены в JAR-файле с использованием org.reflections

Однако, когда проект упакован в файл JAR и запускается, не обнаружены аннотированные классы.

Вот несколько примеров кода:

@TestAnnotation 
public class App { 
    public static void main (String[] args) { 
     Reflections reflections = new Reflections("com.package"); 
     Set<Class<?>> annotated = reflections.getTypesAnnotatedWith(TestAnnotation.class); 

     for (Class c : annotated) { 
      System.out.println ("found annotated class " + c.getName()); 
     } 
    } 
} 

Когда я запускаю этот код в файл JAR не выход. Что я делаю не так?

Благодаря

+0

Не могли бы вы показать нам код своей аннотации? –

+0

У меня такая же проблема, когда вы начинаете с Webstart. – Stephan

ответ

0

Обратите внимание на

Reflections reflections = new Reflections("com.package"); 

Там вы пытаетесь изучить аннотированные классы, расположенные в пакете пакета, который вложен в ком пакета. Но package - ключевое слово Java. Поэтому он не может использоваться как имя пакета. После того, как я переехал App и TestAnnotation только в com пакет все работает нормально.

Но возможно, что ваше дело действительно плохое. Может быть какой-то инструмент или какой-то созданный человеком пакет, который имеет пакет имя (например, используется Cyrillic а вместо латинского a, оба выглядят одинаково в редакторе, но они совершенно разные для Java). Когда буквы смешаны, все выглядит нормально, но не работает. Поэтому попробуйте создать новый действительный корневой пакет и переместите в него свои классы.

Смежные вопросы