2010-04-06 7 views
5

सी # में आप आसानी से किसी दिए गए असेंबली से सभी कक्षाएं पढ़ सकते हैं।जावा पैकेज स्कैनर - दिए गए इंटरफ़ेस के साथ सभी कक्षाएं खोजें

मैं जावा में समतुल्य सुविधा की तलाश में हूं। मुझे अपने जीइस मॉड्यूल में स्वचालित रूप से ईजेबी बीन्स बांधने की ज़रूरत है।

उत्तर

4

दुर्भाग्यवश जावा में कोई उपयोग करने योग्य समाधान नहीं लगता है।

हमारी परियोजना में हमने some blog द्वारा सुझाए गए थोड़ा संशोधित दृष्टिकोण का उपयोग किया। वहां वर्णित समाधान कक्षाओं के लिए फाइल सिस्टम और जेएआर स्कैन करना है।

यदि आप कुछ इंटरफ़ेस को लागू करने वाले केवल कक्षाएं चुनना चाहते हैं, तो आप clazz.isAssignableFrom(MyInterface.class) जैसे कुछ अतिरिक्त चेक कर सकते हैं।

+0

यह मेरी बहुत मदद की है। धन्यवाद! – mgamer

2

एक असेंबली के जावा समकक्ष एक जेएआर फ़ाइल है; एक जेएआर फ़ाइल की सामग्री java.util.jar में कक्षाओं का उपयोग करके सूचीबद्ध की जा सकती है।

कोई सामान्य सामान्य तकनीक नहीं है (जैसे पैकेज में सभी वर्गों को प्राप्त करना) क्योंकि जावा क्लास लोडिंग मैकेनिज्म बहुत लचीला है और एचटीटीपी के माध्यम से लोड की गई कक्षाओं या फ्लाई पर जेनरेट की जाने वाली चीजों की अनुमति देता है, इसलिए सभी वर्गों को जानना असंभव है जो उपलब्ध हैं

0

यहाँ एक है, http://grepcode.com/file/repo1.maven.org/maven2/com.metapossum/metapossum-scanner/1.0.1/com/metapossum/utils/scanner/PackageScanner.java

हम अपने हल्के जावा फ्रेमवर्क, बर्फ में इसका इस्तेमाल किया, और यह बहुत अच्छा काम करता है।

Maven

तरह
<dependency> 
    <groupId>com.metapossum</groupId> 
    <artifactId>metapossum-scanner</artifactId> 
    <version>1.0.1</version> 
</dependency>  
संबंधित मुद्दे