С этими словами я могу найти имя пакета в приложенииJava отражение без файла
Package pack = Item.class.getPackage();
Но все примеры, которые я могу найти здесь или в другом месте, чтобы найти классы в использовании пакета файлы для загрузки баночки и посмотреть в это. У меня есть способ gat список классов в активном проекте без файла?
[EDIT] есть othere ответов здесь, но все они не работали для меня
[Редактировать] это по некоторым причинам это было блокированными для ответов. вот решение
private static Set<Class<? extends Object>> getClassesInPackage(String packagename) {
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setScanners(new SubTypesScanner(false /* don't exclude Object.class */), new ResourcesScanner())
.setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
.filterInputsBy(new FilterBuilder().include(FilterBuilder.prefix(packagename))));
Set<Class<?>> classes = reflections.getSubTypesOf(Object.class);
return classes;
}
Программным нет. Вам нужно проверить файловую систему (связанную с classpath вашего приложения), найти файлы .class и открыть .jar для извлечения .class в jar –
см. Последнее редактирование – user3732793
Класс ClasspathHelper читает .class и .jar для вас –