मान लें कि जावा कोडबेस में "com.example" नामक एक पैकेज है। किसी भी classloader अभी तक लोड नहीं किया गया है -क्या क्लासलोडर को पैकेज लोड करने के लिए मजबूर करने का कोई तरीका है, भले ही उसके किसी भी वर्ग को लोड नहीं किया गया हो?
क्रम में, हम बुला
Packages[] ps = Package.getPackages();
समस्या है द्वारा
Package p = Package.getPackage("com.example"); //(returns null)
या यहाँ तक कि सभी संकुल की एक सूची प्राप्त फोन करके इस पैकेज प्राप्त कर सकते हैं पैकेज से वर्ग, यह इन फ़ंक्शन कॉल के लिए उपलब्ध नहीं होगा। हम इसे बल लोडिंग द्वारा पैकेज लोड करने के लिए पैकेज में वर्गों में से एक पहले, इस तरह मजबूर कर सकते हैं:
this.getClass().getClassLoader().loadClass("com.example.SomeClass");
Package p = Package.getPackage("com.example"); //(returns non-null)
हालांकि, इस hacky है और समय से आगे जानने कुछ क्लास का नाम है कि के अंतर्गत आता है की आवश्यकता है पैकेज।
तो सवाल यह है कि क्या क्लासलोडर ने कुछ भी किया है या नहीं, इस पर ध्यान दिए बिना पैकेज का उदाहरण प्राप्त करने का कोई तरीका है? क्या इस धारणा में क्लासलोडिंग/पैकेज कैसे काम करते हैं, इस बारे में मेरी धारणाएं सही हैं?
https://stackoverflow.com/questions/3455267/why-does-class-getpackage-return-the-same-package-for-classes-from-different-pac से सावधान रहें – Vadzim