2013-01-14 8 views
7

गायब प्रतीत होता है मैं कॉलिंग के लिए उपलब्ध सभी वर्गों की अनुक्रमणिका बनाने के लिए Google प्रतिबिंब पैकेज का उपयोग कर रहा हूं। निम्नलिखित कोड है कि JVM में लोड किए गए हैं सभी वर्गों वापस जाने के लिए माना जाता है:सभी वर्गों की सूची प्राप्त करने के लिए Google प्रतिबिंबों का उपयोग करना - लेकिन जावा। *

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); 

मैं ध्यान दें कि सेट यह रिटर्न जावा में कुछ भी शामिल नहीं है * डोमेन।। क्या प्रतिबिंब पैकेज से परिचित कोई मुझे सलाह दे सकता है कि इन्हें कैसे प्राप्त किया जाए? धन्यवाद!

उत्तर

2

सभी वर्ग सामान्य क्लासलोडर द्वारा लोड नहीं होते हैं; कुछ चीजों को गति देने के लिए बूटस्ट्रैप क्लासलोडर द्वारा लोड किए जाते हैं, और इसे मूल रूप से कोड किया जा सकता है (और इसलिए जावा कोड से पहुंच योग्य)। हालांकि यह अपने मुख्य रूप से उपयोग नहीं है

http://lists.jboss.org/pipermail/jboss-development/2008-April/011943.html

विकल्प

Java - Get a list of all Classes loaded in the JVM

7

गूगल विचार सभी वर्गों प्राप्त करने के लिए इस्तेमाल किया जा सकता, जावा सहित के लिए इस सवाल का देखें *,: इस संदेश देखें।।

Reflections reflections = new Reflections(
    ClasspathHelper.forClass(Object.class), 
    new SubTypesScanner(false)); 

और से:

Set<String> allClasses = 
    reflections.getStore().getSubTypesOf(Object.class.getName()); 
+0

अधिक [यहां] को देखने के (http://stackoverflow.com/a/15313028/1424321) – zapp

+0

धन्यवाद एक बहुत! मैं इसे 2 दिनों के लिए देख रहा हूं। –

संबंधित मुद्दे

 संबंधित मुद्दे