ग्रहण: घोषित पैकेज अपेक्षित पैकेज से मेल नहीं खाता है


86

मुझे एक बाहरी परियोजना को आयात करने में समस्या है। मैं फ़ाइल -> आयात ... -> कार्यक्षेत्र में मौजूदा परियोजनाओं को जाता हूं, उस फ़ोल्डर का चयन करता हूं जहां परियोजना स्थित है और सब कुछ आयात किया गया है - लेकिन परियोजना के पैकेज नाम से ऐसा नहीं लगता है कि ग्रहण की उम्मीद है। पैकेज के सभी नामों में एक उपसर्ग है:

prefix.packagename1
prefix.packagename2

आदि।

लेकिन ग्रहण की उम्मीद है

src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2

आदि क्योंकि निर्देशिका src / prefix1 / उपसर्ग / package1 है

मैं वास्तव में बाहरी कोड के साथ गड़बड़ नहीं करना चाहता। मैं ग्रहण को निर्देशिका "src / prefix1" को अनदेखा करने के लिए कैसे कहूं? या मैं और क्या कर सकता हूं?


मैंने package (name of package under which the file to be ) फ़ाइल के भीगने पर जोड़ा
साईं राम

जवाबों:


105

बस निर्माण पथ में जाएं और src/prefix1इसके बजाय स्रोत पथ को बदलें src

srcनिर्देशिका पर राइट-क्लिक करना आसान हो सकता है और "बिल्ड पथ / बिल्ड पथ से निकालें" का चयन करें, फिर src/prefix1निर्देशिका खोजें, इसे राइट-क्लिक करें और "बिल्ड फ़ोल्डर के रूप में पथ / उपयोग करें" का चयन करें।


2
मैं जो कुछ भी किया था उसे पूर्ववत कैसे करूं? मैंने "बिल्ड पथ / स्रोत फ़ोल्डर के रूप में उपयोग करें" पर क्लिक किया और अब कुछ भी काम नहीं करता है। संपादित करें: मेरे प्रश्न का उत्तर "कॉन्फिगर बिल्ड पाथ" में जाना है और सूची से उस फंकी चीज़ को हटाना है जो src / or gen / नहीं है
ArtOfWarfare

25
ध्यान दें कि जॉन का सुझाव काम करता है लेकिन ग्रहण की पुनः शुरुआत की आवश्यकता हो सकती है।
समिक आर

1
!! यदि आप स्रोत फ़ोल्डर को बदलने के बाद भी त्रुटि देखते हैं, तो प्रोजेक्ट बनाएँ। ग्रहण कभी-कभी मुझे कुछ तोड़ना चाहता है।
मैट एमएससी

4
क्लोज / ओपन प्रेज ने मेरे लिए काम किया ... एक्लिप्स बड़ा टूल है, यह कभी
निकेन

धन्यवाद दोस्त, महान समाधान।
रनकॉर्न

70

मैं बस इस समस्या में भाग गया, और चूंकि श्री स्कीट का समाधान मेरे लिए काम नहीं करता था, इसलिए मैं साझा करता हूं कि मैंने इस समस्या को कैसे हल किया।

यह पता चला है कि मैंने 'src' के तहत जावा फ़ाइल को स्रोत निर्देशिका घोषित करने से पहले खोला था।

ग्रहण में 'src' डायरेक्टरी पर राइट क्लिक करने के बाद, 'बिल्ड पाथ' का चयन करें, और फिर 'सोर्स फोल्डर के रूप में उपयोग करें'

पहले से खोली गई जावा फ़ाइल को बंद करें और फिर से खोलें (F5 रिफ्रेशिंग यह काम नहीं करता है)।

जावा फ़ाइल को "प्रीफिक्स 1" से आगे की ओर पथ प्रदान करें, फ़ाइल में पैकेज के साथ ऊपर (उदाहरण के लिए, आवश्यक प्रश्न उपसर्ग1.prefix.packagename2 से)। यह काम करना चाहिए

ग्रहण को अब 'src' के बारे में शिकायत नहीं करनी चाहिए।


1
यही था वह। बहुत आसान है, लेकिन मुझे थोड़ी देर के लिए अटक गया। धन्यवाद!
क्रिश्चियन विल्मा

बिल्ड पाथ क्लोजिंग को सेट करने और फाइल को फिर से खोलने के बाद मेरे लिए भी आवश्यक था। धन्यवाद!
ed-

हाँ! मेरे लिए भी काम किया।
रॉबर्ट केसी

11

अपनी समस्या * .java फ़ाइलों को अन्य फ़ोल्डर में ले जाएँ।

'Src' आइटम पर क्लिक करें और "F5" दबाएँ।

रेडक्रॉस को भंग कर देगा।

अपनी * .java फ़ाइलों को "पैकेज पथ" पर लौटें, 'src' आइटम पर क्लिक करें और "F5" दबाएँ।

सब ठीक होना चाहिए।


2

यदि आपने किसी मौजूदा प्रोजेक्ट को आयात किया है, तो अपने स्रोत फ़ोल्डर को हटा दें और फिर उन्हें फिर से पथ बनाने के लिए जोड़ें, और ग्रहण को पुनरारंभ करें। जब तक आप पुनः आरंभ नहीं करेंगे तब तक अधिकांश बार ग्रहण त्रुटि दिखाएगा।


1

आईडीई के बाहर चलने में विफल रहने के बाद मेरे लिए होता है। यदि आपके कार्यक्षेत्र की सफाई काम नहीं करती है, तो प्रयास करें: 1) सभी परियोजनाओं को हटा दें 2) एसटीएस / ग्रहण बंद करें और पुनः आरंभ करें, 3) परियोजनाओं को फिर से आयात करें


1

मेरे लिए काम करने वाली एकमात्र चीज परियोजना को हटा रही है और फिर इसे फिर से आयात कर रही है। एक जादू की तरह काम करता है :)


0

मुझे यह समस्या ग्रहण में कभी-कभी एंड्रॉइड प्रोजेक्ट को आयात करते समय मिलती है जिसमें एक .classpath फ़ाइल नहीं होती है। जो ग्रहण बनाता है, वह बिल्कुल वैसा नहीं है जैसा कि एंड्रॉइड को उम्मीद है। लेकिन, एंड्रॉइड .classpath फाइलें आमतौर पर सभी सापेक्ष होती हैं, इसलिए मैं गलत .classpath पर किसी अन्य प्रोजेक्ट की सही .classpath फ़ाइल की प्रतिलिपि बनाता हूं। मैंने एक वीडियो बनाया है जिसमें दिखाया गया है कि मैं यह कैसे करता हूं: https://www.youtube.com/watch?v=IVIhgeahS1Ynto


0

मान लीजिए कि आपके प्रोजेक्ट में एक पैकेज है package name1.name2.name3.name4 (घोषित पैकेज)

आपका पैकेज खोजकर्ता
name3.name4 नाम के संकुल शीर्ष स्तर को name1.name2
उप संकुल नाम दिखाता है

आपके पास त्रुटियां होंगी क्योंकि ग्रहण आपके द्वारा आयात किए जाने वाले बिंदु पर शुरू होने वाली डिस्क पर फ़ाइल निर्देशिका संरचना से पैकेज का नाम निकालता है।

मेरा मामला थोड़ा अधिक शामिल था, शायद इसलिए कि मैं अपने कार्यक्षेत्र के बाहर एक फ़ोल्डर के प्रतीकात्मक लिंक का उपयोग कर रहा था।

मैंने पहली बार Build.Java Build Path.Source Tab.Link Source Button की कोशिश की। अपने पैकेज में name1 से पहले फ़ोल्डर में रखें। फ़ोल्डर-नाम जैसा कि आप चाहते हैं (मुझे लगता है)। लेकिन मुद्दे थे।

तब मैंने फ़ोल्डर को बिल्ड पथ से हटा दिया और फ़ाइल की कोशिश की> आयात ...> सामान्य> फ़ाइल सिस्टम> अगला> निर्देशिका से क्लिक करें ... ब्राउज़ करें ... name1 से ऊपर फ़ोल्डर में> उन्नत बटन पर क्लिक करें> कार्यक्षेत्र में लिंक बनाएं> क्लिक करें समाप्त करें पर क्लिक करें। बटन।


सच। मेरे मामले में, परियोजना का नाम इसमें पोस्टफिक्स जोड़ा गया था, -2.0.0-SNAPSHOT। उस उपसर्ग को हटा दिया (नाम बदलें परियोजना ..) और सब कुछ काम किया।
JRun

0

प्रोजेक्ट के src फोल्डर में जाएं और सभी कोड को कुछ अस्थायी स्थान पर कॉपी करें और प्रोजेक्ट बनाएं। और अब वास्तविक कोड को अस्थायी स्थान से प्रोजेक्ट src में कॉपी करें। और फिर से बिल्ड को चलाएं। समस्या का समाधान होगा।

नोट: यह ग्रहण के लिए विशिष्ट है।


0

मैं एक ही समस्या अभी हुआ है। हालाँकि, पहले कुछ उत्तर मेरे काम नहीं आते हैं। मैं एक समाधान प्रस्तावित करता हूं : .classpath फ़ाइल को बदल दें। उदाहरण के लिए, आप इस तरह classpathentry नोड के पथ को परिभाषित कर सकते हैं : पथ = "src / prefix1 / java" या पथ = " src / prefix1 / संसाधन "। आशा है कि यह मदद कर सकता है।


0

मेरे लिए मुद्दा यह था कि मैं एक मौजूदा परियोजना को मावेन में परिवर्तित कर रहा था, प्रलेखन के अनुसार फ़ोल्डर संरचनाएं बनाईं और यह पैकेज के हिस्से के रूप में 'मुख्य' फ़ोल्डर दिखा रहा था। मैंने जॉन स्कीट / जॉडचुक के समान निर्देशों का पालन किया और जावा बिल्ड पथ में चला गया, सभी टूटे हुए निर्माण पथों को हटा दिया, और फिर अपने बिल्ड पथ को 'src / main / java' और 'src / test / java' के रूप में जोड़ा। प्रत्येक के लिए संसाधन फ़ोल्डर के रूप में, और इसने समस्या हल कर दी।


0

निर्माण पथ में पैकेज नाम से पहले 'तक' पथ होना चाहिए।

उदाहरण के लिए, यदि फ़ोल्डर संरचना है: src/main/java/com/example/dao यदि आयात विवरण वाला वर्ग 'package com.example.dao'गलत पैकेज त्रुटि की शिकायत करता है, तो, बिल्ड पथ include:src/main/java यह समस्या को हल करना चाहिए।


-1
  1. उस बाहरी फ़ोल्डर पर राइट क्लिक करें, जिसमें पैकेज है
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. बिल्ड पथ पर क्लिक करें -> बिल्ड पथ से निकालें।

  2. अब अपने प्रोजेक्ट के फ़ोल्डर अनुभाग में फ़ोल्डर प्रीफ़िक्स 1 पर जाएं।

  3. इस पर राइट क्लिक करें -> बिल्ड पथ -> स्रोत फ़ोल्डर के रूप में उपयोग करें।

  4. किया हुआ। पैकेज फ़ोल्डर अब कोई त्रुटि नहीं दिखाएगा। यदि यह अभी भी दिखाता है, तो प्रोजेक्ट को पुनरारंभ करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.