पैकेज और निर्देशिका के बीच एक रिश्ता है, लेकिन यह है जो आप को बनाए रखना चाहिए। यदि आपके पास एक वर्ग है जो "mypackage1.mypackage2" में है, तो इसका मतलब है कि java
कमांड को "mypackage1 \ mypackage2" नामक निर्देशिका संरचना में ढूंढने की उम्मीद है ("पीछे की ओर" विंडोज नोटेशन), उस निर्देशिका संरचना के आगे एक निर्देशिका में एम्बेडेड (चलिए इसे "myjava" कहते हैं) जिसका नाम classpath
में है (या फिर सीधे "वर्तमान निर्देशिका" में है)।
तो अपने जावा वर्ग (जो आंतरिक रूप से कहते हैं package mypackage1.mypackage2;
), में है जैसे कि, "\ Users \ Myname \ Myjava \ mypackage1 \ mypackage2 \", और आप जगह "\ Users \ Myname \ Myjava" वर्ग पथ में, या अन्यथा आपकी वर्तमान निर्देशिका "\ Users \ myName \ myjava" पर सेट है।
यदि आप इसे मिश्रित करते हैं, तो कक्षा पूरी तरह से नहीं मिलेगी, या आपको कभी भी घबराहट "NoClassDefFoundError" जैसी कोई त्रुटि मिल जाएगी।
क्यों पैकेज (और निर्देशिका) का उपयोग करेगा, कारण "नाम स्थान" और "चिंताओं को अलग करना" (उनको देखें) के साथ करना है। यदि कोई पैकेज नहीं था और सभी "जावा.लांग", "जावा.ओ", "सन.मिस्क", एट अल क्लासेस एक साथ थे, तो जावा सीधे रखना मुश्किल होगा। सबसे पहले, उन्हें सीधे रखने और नाम विवादों से परहेज करने के लिए नाम "उपसर्ग" का उपयोग करना होगा। और लॉजिकल ग्रुपिंग में से अधिकांश खो जाएंगे।
अपनी खुद की परियोजनाओं के साथ आपको अपने लिए लिखने वाले सरल छोटे कार्यक्रमों के लिए पैकेजों का उपयोग करने की आवश्यकता नहीं है, लेकिन यदि आप कुछ लिखते हैं तो आप किसी और को दे सकते हैं, यह "myname.myproject" जैसे पैकेज का उपयोग करने के लिए विनम्र है (अपना नाम और पाठ्यक्रम की प्रोजेक्ट को प्रतिस्थापित करना), इसलिए जिस व्यक्ति को आप इसे देते हैं उसे नाम विवादों के बिना दूसरों के साथ जोड़ सकते हैं।
बड़े अनुप्रयोगों में आप अलग-अलग स्तरों का उपयोग करके पाएंगे, आप कार्यों को सीधे रखने में मदद करते हैं, ताकि आप जान सकें कि सबकुछ कहां है। यह आपको विभिन्न कार्यात्मक क्षेत्रों के बीच "सीमा पार करने" से भी हतोत्साहित करता है, इसलिए आपको असंबंधित तर्क मनोरंजन नहीं मिलता है।
ग्रहण (यदि आप इसका उपयोग करते हैं) इस तरह की समस्या को थोड़ा सा हल करता है क्योंकि यह निर्देशिका और पैकेज नाम प्रदान करने के लिए "चाहता है" और कभी-कभी (लेकिन हमेशा नहीं) उन्हें सिंक में रखेगा।
अपने शीर्षक googling इस लिंक http://stackoverflow.com/questions/9510932/java-package-vs-folder-structure-what-is-the-difference – gigadot
मैं understand.kindly स्पष्ट नहीं है देता है।! – jbmeta
इसका मतलब है कि सवाल पहले से ही पूछा गया है और आपको पहले और इसी तरह के प्रश्नों को देखना चाहिए। –