pin*_*one 7 java class reflections
我正在使用google Reflections包来构建可用于调用的所有类的索引.以下代码应该返回JVM中加载的所有类:
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setScanners(new SubTypesScanner(false), new ResourcesScanner())
.setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0]))));
Set<Class<? extends Object>> allClasses =
reflections.getSubTypesOf(Object.class);
Run Code Online (Sandbox Code Playgroud)
我注意到它返回的集合不包含java.*域中的任何内容.熟悉Reflections包的人可以告诉我如何获得这些吗?谢谢!
Google Reflections可用于获取所有类,包括java.*,尽管它不是主要用途.
Reflections reflections = new Reflections(
ClasspathHelper.forClass(Object.class),
new SubTypesScanner(false));
Run Code Online (Sandbox Code Playgroud)
然后:
Set<String> allClasses =
reflections.getStore().getSubTypesOf(Object.class.getName());
Run Code Online (Sandbox Code Playgroud)
并非所有类都由普通类加载器加载;有些由引导类加载器加载以加快速度,并且可以本地编码(因此无法从 Java 代码访问)。看到这条消息:
http://lists.jboss.org/pipermail/jboss-development/2008-April/011943.html
请参阅此问题以获取替代方案