Problem może być spowodowany nie ma programu ładującego klasy, które można rozpoznać nazwy (choć można go rozwiązać podtyp). Brzmi to sprzecznie, ale miałem komunikat o błędzie podczas budowania konfiguracji i korzystania z ClasspathHelper.forClassLoader
w instancji URLClassloader z zainstalowaną aplikacją, aby dowiedzieć się, co skanować w ścieżce klas, ale nie przekazywać wspomnianego URLClassLoader do konfiguracji Reflections, aby mógł on utworzyć instancję rzeczy poprawnie.
Więc może chcesz spróbować czegoś wzdłuż linii, co następuje:
URLClassLoader urlcl = new URLClassLoader(urls);
Reflections reflections = new Reflections(
new ConfigurationBuilder().setUrls(
ClasspathHelper.forClassLoader(urlcl)
).addClassLoader(urlcl)
);
gdzie urls
jest tablicą adresów URL do słoików zawierających klas, które chcesz załadować. Otrzymałem ten sam błąd, gdy nie miałem ostatecznego połączenia addClassLoader(...)
z ConfigurationBuilder
.
Jeśli to nie działa lub nie ma zastosowania, może warto po prostu ustawić punkt przerwania w ReflectionsUtil.forName(String typeName, ClassLoader... classLoaders))
, aby sprawdzić, co się dzieje.
Musisz podać trochę więcej kodu (np. Klasa ExtendsFoo), być może trochę informacji o strukturze pakietu i może trochę więcej śladu stosu wyjątku. –
Czy Reflections to klasa z Java API? podaj nam więcej informacji .. – Satya
Używam tego, jak wskazuje mój tag: https://code.google.com/p/reflections/ – Kezz101