2012-08-12 3 views
6

में संदर्भित पुस्तकालयों में कक्षाओं का उपयोग कैसे करें मैंने उपरोक्त वर्णित संदर्भित लाइब्रेरी के रूप में algs4.jar फ़ाइल आयात की है। सब ठीक लगते हैं लेकिन मैं पुस्तकालय में किसी भी कक्षा का उपयोग या उपयोग नहीं कर सकता।ग्रहण

क्या कोई आयात विवरण है जो मुझे याद आ रही है?

छवि संदर्भ:

नोट मैं कैसे संदर्भित पुस्तकालय से BinarySearch उपयोग करने के लिए कोशिश कर रहा हूँ, लेकिन यह मुझे का उपयोग करें या इसे आयात करने के लिए एक विकल्प की पेशकश नहीं है।

+1

आप 'ctrl + shift + o' कर सकते हैं और ग्रहण आवश्यक आयात जोड़ देगा। आपकी त्रुटि से ऐसा लगता है कि आप निर्माण पथ में 'बाइनरी खोज' श्रेणी वाले जार को याद कर रहे हैं। – CoolBeans

+3

मुझे एक ही समस्या है ... एक ही algs4.jar :) :) –

उत्तर

6

मुझे यकीन नहीं है, मैंने यह कोशिश नहीं की। यद्यपि कुछ व्याख्याएं।

क्या यह एक मानक पुस्तकालय है या किसी ने इसे स्वयं बनाया है और आपको दिया है?

समस्या BinarySearchdefault पैकेज में है। आप इसे आयात करने में सक्षम नहीं होंगे। यदि यह लाइब्रेरी आपके द्वारा बनाई गई है, या आपके किसी भी मित्र द्वारा, आपको अपने मित्र से सभी वर्गों को डिफ़ॉल्ट पैकेज से अच्छे नामस्थान में स्थानांतरित करने और फिर जार को फिर से बनाने की आवश्यकता है।

यदि कक्षा सुलभ है, ctr + shift + o कक्षा आयात करना चाहिए।

+0

यही मैंने सोचना शुरू कर दिया। इसलिए मैंने जार को एक पैकेज में जोड़ा। अब मैं एक आयात कथन ("com.package। *") का उपयोग कर सकता हूं और मैं कक्षा ("बाइनरीशर्च बीएस = नई बाइनरीशर्च()" के लिए एक नया संदर्भ भी बना सकता हूं। हालांकि, रनटाइम पर मुझे क्लास नॉटफाउंड अपवाद प्राप्त होता है। – jeffstern

+0

इसके अतिरिक्त, मुझे यह त्रुटि संदेश भी मिलता है: 'थ्रेड में अपवाद "मुख्य" java.lang.NoClassDefFoundError' – jeffstern

+0

@jeffstern - आप केवल' .class' फ़ाइलों को अनजिप और स्थानांतरित नहीं कर सकते हैं। आपको स्रोत की आवश्यकता है। प्रत्येक '.java' फ़ाइल के लिए उपयुक्त कुछ के लिए पैकेज घोषणा और फिर जार के रूप में निर्यात करें। मौजूदा '.class' फ़ाइलों में अभी भी पुरानी पैकेज घोषणा है, यानी 'डिफ़ॉल्ट'। उन्हें वांछित पैकेज में स्थानांतरित करने से पैकेज घोषणा नहीं बदलेगी और इसलिए आपका आयात काम नहीं करेगा। – devang

1

ध्यान दें कि जार फ़ाइलों में कक्षाएं सभी डिफ़ॉल्ट पैकेज में निहित हैं।

यदि आपकी कक्षाएं तब पैकेज में निहित हैं तो वे सीधे पहुंच योग्य नहीं होंगे।

मैं यह उत्तर सबमिट करता हूं क्योंकि मैं एल्गोरिदम कोर्स ले रहा हूं जिसमें इन जार फाइलें हैं और यह मेरे कार्यक्रम का विशिष्ट कारण काम नहीं कर रहा है।

+0

यह सही उत्तर है। 'डिफ़ॉल्ट' पैकेज में कक्षाएं नहीं हैं सुलभ अन्य पैकेजों में कक्षाओं द्वारा। संदर्भ पुस्तकालय में होने के साथ इसका कोई लेना-देना नहीं है। – Sentry

5

मैं Coursera के माध्यम से Algorithms कक्षा ले रहा हूं जो algs4.jar संदर्भ पुस्तकालय का उपयोग करता है।

समस्या:

मुद्दा आप कर रहे हैं कि संदर्भ पुस्तकालय डिफ़ॉल्ट पैकेज और स्रोत है जिसमें आप संदर्भ पुस्तकालय तक पहुँच रहे हैं में स्थित है नहीं है।

समाधान

अपनी परियोजना में सभी वर्गों डिफ़ॉल्ट पैकेज में होने की जरूरत है, अन्यथा संदर्भ लाइब्रेरी (जो डिफ़ॉल्ट पैकेज में स्थित हैं) से मान्यता प्राप्त नहीं किया जाएगा। आपके प्रोजेक्ट क्लास को src निर्देशिका में होना आवश्यक है और आपको अपनी .java फ़ाइलों की शुरुआत में कोई पैकेज घोषित नहीं करना चाहिए। इसके अतिरिक्त आपको यह सुनिश्चित करने की भी आवश्यकता है कि आपके पास added the reference libraries to your build path है।

0

यदि आप कक्षाएं आयात करना चाहते हैं, तो आपको पुस्तकालय के पैक किए गए संस्करण को डाउनलोड करने की आवश्यकता है। इस वेबपृष्ठ के नीचे Q & एक अनुभाग देखें। http://introcs.cs.princeton.edu/java/stdlib/

प्र अगर मैं एक नामित पैकेज का उपयोग मेरी कोड की संरचना करने, संकलक अब पुस्तकालयों stdlib.jar में उपयोग कर सकते हैं। क्यों नहीं?

ए। Stdlib.jar में पुस्तकालय "डिफ़ॉल्ट" पैकेज में हैं।जावा में, आप नामित पैकेज से डिफ़ॉल्ट पैकेज में कक्षाओं तक नहीं पहुंच सकते हैं। यदि आपको नामांकित पैकेज के साथ हमारे पुस्तकालयों का उपयोग करने की आवश्यकता है, तो आप पैक किए गए संस्करण stdlib-package.jar का उपयोग कर सकते हैं।

0

सबसे पहले, बाइनरीशर्च नहीं बनाया जा सकता (निजी निर्माता)। का प्रयोग करें स्थिर विधि BinarySearch.rank(int key, int[] array)

दूसरी बात आप BinarySearch केवल डिफ़ॉल्ट पैकेज

तीसरा Arrays.binarySearch(array, key) के बारे में क्या से उपयोग कर सकते हैं?