I have a class which uses org.reflections.Reflections
to get annotations in classes in the class path.
When i use it in the same project everything works fine, but when i export it as a JAR and refer it in a different class i get the below execption:
Exception in thread "main" org.reflections.ReflectionsException: Scanner TypeAnnotationsScanner was not configured at org.reflections.Store.get(Store.java:39) at org.reflections.Store.get(Store.java:61) at org.reflections.Store.get(Store.java:46) at org.reflections.Reflections.getTypesAnnotatedWith(Reflections.java:429)
Here is the code snippet:
System.out.println("Package to Scan: "+getPackageName()); final Reflections reflections = new Reflections(getPackageName(), new TypeAnnotationsScanner()); final Set<Class<?>> handlerClasses = reflections.getTypesAnnotatedWith(HandlerMapping.class,true);
I do provide a TypeAnnotationsScanner
object, but still issue persists.
Note: It does not work only when above code is referred as a jar. (I created a fat jar using maven-assembly plugin)
Any pointers?
Advertisement
Answer
Update 4 October 2021:
This bug was fixed in version 0.10.
Previous answer:
Maybe not the type of answer one wants to hear but reflections
version 0.9.12
contains a bug described here: https://github.com/ronmamo/reflections/issues/273
The bugfix has been provided in this PR (not merged yet): https://github.com/ronmamo/reflections/pull/278
The major difference between version 0.9.11
and 0.9.12
is that in 0.9.12
Guava dependency was removed in favor of Java 8 Streams API.
If you need to include this dependency without Guava transitive dependency, you may look at the next project: https://github.com/aschoerk/reflections8
Currently, the latest available version of reflections8
is 0.11.7
.
Notice, reflections8
is now considered to be obsolete due to 0.9.12
release of reflections
but their version 0.11.7
doesn’t contain this bug and this version doesn’t depend on Guava. So, a possible solution would be to switch to net.oneandone.reflections8:reflections8:0.11.7
.