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


89

मैं ग्रहण का उपयोग कर रहा हूं और कुछ समय के लिए जावा का उपयोग नहीं किया है। हालांकि, मैं अपने कोड को कमांड-लाइन पर ठीक से संकलित कर सकता हूं और आवश्यक .classफाइलें उत्पन्न कर सकता हूं । ग्रहण में, यह शिकायत करता है The declared package "Devices" does not match the expected package ""। इसका क्या मतलब है और मैं इसे कैसे ठीक कर सकता हूं?

नमूना कोड:

package Devices;

public final class DevFrequency 
{
    public short messageID;
    public double frequency;
    public short converterID;
    public DevFrequency() 
    {
    }
    public DevFrequency(short _messageID,double _frequency,short _converterID)
    {
        messageID = _messageID;
        frequency = _frequency;
        converterID = _converterID;
    }
}

मेरे प्रोजेक्ट का नाम है DeviceDDS


2
क्या यह वर्ग /src/Convertersनिर्देशिका में है?
जेरेमी

6
यदि आप अपने प्रश्न को पूर्वव्यापी रूप से बदलने जा रहे हैं (जो कि व्यर्थ लगता है, ईमानदार होना) तो आपको इसके बारे में सुसंगत होना चाहिए - आपने प्रश्न के पहले पैराग्राफ को संपादित नहीं किया है। आपने सभी टिप्पणियों को विषम भी बनाया है। लगभग डेढ़ साल बाद सब कुछ क्यों बदला?
जॉन स्कीट

जवाबों:


52

ग्रहण को घोषित पैकेज की अपेक्षा है कि वह निर्देशिका पदानुक्रम से मेल खाता है - इसलिए यह आपके जावा फ़ाइल को आपके स्रोत रूट के अंतर्गत "डिवाइस" नामक एक निर्देशिका में होने की उम्मीद कर रहा है। फिलहाल ऐसा लग रहा है कि फाइल सीधे आपके सोर्स रूट में है। इसलिए उचित निर्देशिका बनाएं, और फ़ाइल को वहां ले जाएं।

ध्यान दें कि परंपरागत रूप से, पैकेज कम मामले में होते हैं और अपने संगठन का नाम रिवर्स डीएनएस क्रम में शामिल करते हैं, जैसे

com.foo.devices;

3
@ शक्ति: जब तक आप जागरूक हैं, आप नहीं कर सकते, और मैं दृढ़ता से आपको सलाह दूंगा कि अगर आप कर सकते हैं तो भी नहीं। सभी अनुभवी जावा डेवलपर्स आपको सामान्य सम्मेलनों का पालन करने की उम्मीद करेंगे।
जॉन स्कीट

88

फ़ाइल को बंद करने और फिर से खोलने का प्रयास करें।

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


2
वीएस कोड के अंदर ग्रैडल प्रोजेक्ट के साथ यह समस्या थी। इसे फिर से खोलें।
टेस्टीवेट

1
ग्रहण संपादक में फ़ाइल खोलने और बंद करने से समस्या को हल करने में मदद मिली। मैंने java config build - source टैब में एक सोर्स फोल्डर जोड़ा था, त्रुटि दूर नहीं की, लेकिन जब मैंने ग्रहण में संपादक को बंद किया और खोला, तो इससे मदद मिली। :-)
जसजवा

ग्रहण से बाहर निकलने और फिर से शुरू करने से समस्या भी ठीक हो गई।
डॉन स्मिथ

वह .. मैंने एक घंटे बिताए इसे ठीक करने की कोशिश की और फिर यह देखा।
विकाश

44

समाधान 1: एक समाधान जो मेरे लिए काम करता है जब यह त्रुटि " घोषित पैकेज अपेक्षित पैकेज से मेल नहीं खाता है " मैं उस परियोजना के लिए उत्पन्न हुआ जिसे मैंने ग्रहण सीवीएस से चेक-आउट किया था:

1. नेविगेशन बार में प्रोजेक्ट पर क्लिक करें और 'डिलीट' पर क्लिक
करें। सुनिश्चित करें कि ' डिस्क पर प्रोजेक्ट सामग्री हटाएं ' विकल्प की जांच नहीं की गई है, और ठीक पर क्लिक करें।
3.अब परियोजना को हटाए जाने के बाद, फ़ाइल -> आयात -> सामान्य -> ​​मौजूदा परियोजनाओं को कार्यक्षेत्र में जाएं
4. निर्देशिका लिस्टिंग से अपने कार्यक्षेत्र का चयन करें और अपने परियोजना के नाम के बगल में स्थित बॉक्स की जांच करें। ' समाप्त ' पर क्लिक करें

समाधान 2: एक बार फिर मुझे यह त्रुटि निम्न संदेश के साथ मिली

एक्लिप्स बिल्ड एरर - java.lang.Object को हल नहीं किया जा सकता है मुझे यहाँ उल्लेखित एक अन्य मार्ग का पालन करना था और त्रुटि दूर हो गई।

इस बीच, आसपास का काम परियोजना से जेआरई सिस्टम लाइब्रेरी को हटाने और फिर इसे वापस जोड़ना है। यहाँ कदम हैं:

  1. बिल्ड त्रुटि वाले प्रोजेक्ट के गुणों पर जाएं (राइट क्लिक> गुण) "बिल्ड पथ" अनुभाग में "लाइब्रेरी" टैब देखें सूची में "JRE सिस्टम लाइब्रेरी" ढूंढें (यदि यह गायब है तो यह त्रुटि संदेश नहीं है ग्रहण बग लेकिन एक गलत कॉन्फ़िगर की गई परियोजना)
  2. "JRE सिस्टम लाइब्रेरी" निकालें
  3. "लाइब्रेरी जोड़ें ..." को हिट करें, "JRE सिस्टम लाइब्रेरी" चुनें और प्रोजेक्ट के लिए उपयुक्त JRE जोड़ें (जैसे। 'कार्यक्षेत्र डिफ़ॉल्ट RRE')
  4. लाइब्रेरी चयन में "फिनिश" और प्रोजेक्ट गुणों में "ओके" मारो और फिर प्रोजेक्ट के फिर से निर्माण की प्रतीक्षा करें

उम्मीद है कि त्रुटि का समाधान हो जाएगा ...


मुझे यह भी करना था (निर्माण के लिए ग्रूवी परीक्षणों की एक निर्देशिका जोड़कर)। अपने रन कॉन्फ़िगरेशन पर नोट्स बनाना न भूलें, जिसे आपको फिर से बनाना होगा। किसी भी विचार क्यों यह आवश्यक है? कितना दर्द।
जोशुआ गोल्डबर्ग

11
सरल समाधान: मैं फिर से इस स्थिति में था, और परियोजना को बंद करके, ग्रहण को फिर से शुरू करके, और परियोजना को फिर से खोलने के द्वारा इसे प्राप्त करने में सक्षम था।
जोशुआ गोल्डबर्ग

12
और भी सरल! मेरे पास बस फिर से था, और यह एकल समस्याग्रस्त फ़ाइल के संपादक को बंद करने और फिर से खोलने से दूर चला गया।
जोशुआ गोल्डबर्ग

4
ग्रहण को पुनः आरंभ करना इसे ठीक करता है।
माइक आर

समाधान 1 ने मेरे लिए काम किया। बहुत अजीब। मैंने अन्य मशीनों पर ग्रहण में समान गिट क्लोन आयात किया है और इस समस्या को नहीं देखा है।
dnuttle

13

मैंने इन चरणों का पालन करके समस्या का समाधान किया:

  1. प्रोजेक्ट का चयन करें - राइट क्लिक - जावा बिल्ड पथ।

  2. स्रोत टैब में - आप में बदल जाते srcहैं src/main/java

  3. ग्रहण सभी परियोजना को फिर से शुरू करेगा।


11

मुझे यह समस्या थी - मेरे पैकेज के भीतर की अन्य कक्षाएं ठीक थीं, लेकिन एक वर्ग के पास इसके खिलाफ त्रुटि थी। पैकेज की घोषणा में कुछ भी गलत नहीं था।

मैंने इसे करके तय किया refactor->moveऔर कक्षा को अस्थायी रूप से दूसरे पैकेज में स्थानांतरित कर दिया, फिर refactor->moveमूल पैकेज पर वापस आ गया।



2

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


1

सुनिश्चित करें कि Devicesप्रोजेक्ट गुण में एक स्रोत फ़ोल्डर के रूप में परिभाषित किया गया है।


1

उसी तरह की त्रुटि हुई लेकिन मेरा पैकेज बिल्कुल सही था। जब मैंने अपना संपादक बंद किया और खोला, तो त्रुटि गायब हो गई। आशा है कि यह कुछ परिदृश्यों में मदद कर सकता है।


1

मैंने अपनी .classpathफ़ाइल में उस पैकेज के लिए "बहिष्कृत" विशेषता को हटाकर इसे ठीक किया । विशेषता निकालें, संपूर्ण टैग नहीं, या "src / java" एक स्रोत फ़ोल्डर होना बंद हो जाएगा।

<classpathentry excluding="com/myproject/mypackage/mysubpackage/" kind="src" path="src/java"/>

1

पैकेज नाम का उल्लेख करके यह समस्या हल हो गई

मैंने अपनी फ़ाइल Test_Steps.java को स्थानांतरित कर दिया, जो पैकेज स्टेपडिफिन के तहत था

यहाँ छवि विवरण दर्ज करें

सिर्फ पैकेज stepDefinition जोड़कर समस्या का समाधान हो गया

तो यह समस्या तब हो सकती है जब आपके पास कोई पैकेज हो और आप अपनी कक्षा की फ़ाइल में उपयोग नहीं कर रहे हों।

इसे जोड़ने से समस्या हल हो गई है और त्रुटि दिखाई नहीं दे रही थी।

यहाँ छवि विवरण दर्ज करें


0

सुनिश्चित करें कि आपने एक सही पैकेज बनाया है। आपको पैकेज के बजाय फ़ोल्डर बनाने का मौका मिल सकता है


0
  1. अपनी परियोजना के कार्यक्षेत्र रूट निर्देशिका में निर्देशिका [your.project.name] बनाएँ।

  2. कॉपी करें। "जावा" से "src" उस निर्देशिका में।

  3. प्रोजेक्ट को बंद करें और फिर से खोलें।


0

यह मेरे साथ तब हुआ जब मैं ग्रहण में एक svn भंडार से एक परियोजना की जाँच कर रहा था। मेरे .m2 फ़ोल्डर में जार फाइलें थीं जिन्हें ग्रहण नहीं देख रहा था। मेरे द्वारा किए गए मुद्दे को ठीक करने के लिए:

राइट क्लिक प्रोजेक्ट फ़ोल्डर कॉन्फ़िगर करें> Maven प्रोजेक्ट में कनवर्ट करें

और इस मुद्दे को हल किया।


0

एक लाख उत्तर हैं, लेकिन यहां एक और एक है: फ़ाइलों को एक नए पैकेज में कॉपी करें, पुराने पैकेज को हटा दें और नए पैकेज को पुराने पैकेज के नाम पर नाम दें।


0

सुनिश्चित करें कि आप डिफ़ॉल्ट पैकेज का उपयोग नहीं कर रहे हैं। नाम 'उपकरणों' के साथ एक नया पैकेज बनाएँ और इस कोड को उसके अंदर कॉपी करें और उपयोग करें।


0

मेरे पास इस तरह की परिस्थितियां थीं जब मैंने अन्य पैकेजों / परियोजनाओं से कक्षाएं कॉपी कीं।

मेनू-> प्रोजेक्ट-> क्लीन आमतौर पर मदद करता है।


0

मेरे मामले में मैंने समस्या टैब में त्रुटि मार्कर का चयन किया और इसे हटा दिया क्योंकि जावा की फ़ाइल मुख्य विधि सही तरीके से निष्पादित की जा रही थी। यह इकोनस नियोन में स्थापित प्लगइन्स की भीड़ के साथ कुछ गड़बड़ है।


0

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


0

मैं स्प्रिंग टूल सूट का उपयोग कर रहा था 4. इस मुद्दे का पता लगाने में सक्षम नहीं था। निर्देशिका संरचना पैकेज के नाम के अनुसार थी।

लेकिन प्रोजेक्ट को साफ करने से मुझे मदद मिली।


0

मैं एक ही मुद्दा के साथ एक मुद्दा था ग्रहण आईडीई में। मैं .classpath फ़ाइल को सही प्रारूप के साथ बदलकर इसे हल करने में सक्षम था। प्रोजेक्ट को बंद करने और खोलने के बाद।

नमूना .classpath फ़ाइल

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/webapp">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="test" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="target/classes"/>
</classpath>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.