Het aangegeven pakket komt niet overeen met het verwachte pakket

Ik gebruik Eclipse en heb Java al een tijdje niet meer gebruikt. Ik kan mijn code echter prima op de opdrachtregel compileren en de benodigde .class-bestanden genereren. In Eclipse klaagt het dat The declared package "Devices" does not match the expected package "". Wat betekent dit en hoe kan ik dit oplossen?

Voorbeeldcode:

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;
    }
}

De naam van mijn project is DeviceDDS.


Antwoord 1, autoriteit 100%

Eclipse verwacht dat het gedeclareerde pakket overeenkomt met de directoryhiërarchie – dus verwacht het dat uw Java-bestand zich in een directory met de naam “Apparaten” onder uw bronroot bevindt. Op dit moment lijkt het erop dat het bestand direct in je source root staat. Maak dus de juiste map aan en verplaats het bestand daarheen.

Houd er rekening mee dat pakketten gewoonlijk in kleine letters zijn en de naam van uw organisatie in omgekeerde DNS-volgorde bevatten, bijvoorbeeld

com.foo.devices;

Antwoord 2, autoriteit 97%

Probeer het bestand te sluiten en opnieuw te openen.

Het is mogelijk om deze fout in eclipse te krijgen als er absoluut niets mis is met de bestandslocatie of pakketdeclaratie. Probeer dat voordat u veel tijd besteedt aan het uitproberen van deze andere oplossingen. Soms wordt eclips gewoon in de war. Bij mij heeft het een aantal keer gewerkt. Ik crediteer het ideeaan Joshua Goldberg.


Antwoord 3, autoriteit 79%

Oplossing 1:Een oplossing die voor mij werkte toen deze fout “Het gedeclareerde pakket komt niet overeen met het verwachte pakket” optrad voor een project dat ik heb uitgecheckt bij eclipse CVS :

1.Klik met de rechtermuisknop op het project in de navigatiebalk en klik op ‘verwijderen’
2.Zorg ervoor dat de optie ‘Verwijder projectinhoud op schijfNIETis aangevinkt en klik op OK.
3. Nadat het project is verwijderd, gaat u naar Bestand -> Importeren -> Algemeen -> Bestaande projecten in werkruimte
4.Selecteer uw werkruimte in de directorylijst en vink het vakje naast uw projectnaam aan. Klik op ‘Voltooien

Oplossing 2:Opnieuw kreeg ik deze fout met het volgende bericht

Eclipse-buildfouten – java.lang.Object kan niet worden opgelost
Ik moest hier een andere route volgen en de fout ging weg.

In de tussentijd is de oplossing om de JRE-systeembibliotheek uit het project te verwijderen en deze vervolgens weer toe te voegen.
Dit zijn de stappen:

  1. Ga naar de eigenschappen van het project met de build-fout (klik met de rechtermuisknop op > Properties) Bekijk het tabblad “Bibliotheken” in het gedeelte “Build Path” Zoek de “JRE-systeembibliotheek” in de lijst (als deze ontbreekt, dan is deze fout bericht is geen eclips-bug maar een verkeerd geconfigureerd project)
  2. Verwijder de “JRE-systeembibliotheek”
  3. Klik op “Bibliotheek toevoegen …”, selecteer “JRE-systeembibliotheek” en voeg de juiste JRE voor het project toe (bijv. ‘Werkruimte standaard JRE’)
  4. Klik op “Voltooien” in de bibliotheekselectie en op “OK” in de projecteigenschappen en wacht vervolgens op de heropbouw van het project

Hopelijk wordt de fout opgelost …


Antwoord 4, autoriteit 28%

Ik heb het probleem opgelost door deze stappen te volgen:

  1. Selecteer het project – Klik met de rechtermuisknop – Java build-pad.

  2. Op het tabblad Bron – verander je de srcin src/main/java.

  3. Eclipse zal het hele project opnieuw ordenen.


Antwoord 5, autoriteit 19%

Ik had dit probleem – de andere klassen in mijn pakket waren prima, maar één klasse had de fout ertegen. Er was niets mis met de pakketaangifte.

Ik heb het opgelost door refactor->movete doen en de klasse tijdelijk naar een ander pakket te verplaatsen, en vervolgens refactor->moveterug naar het originele pakket.


Antwoord 6, autoriteit 5%

Ik repareer het door de naam te veranderen in kleine letters en nu herkent Eclipse het pakket.


Antwoord 7, autoriteit 3%

Je moet de klas in een map Deviceshebben.


Antwoord 8, autoriteit 3%

Maak een nieuw pakket onder uw project met de naam “Apparaten” en plaats uw klas erin. Dit komt overeen met de klasse die in een map met de naam “Apparaten” in de bronmap van uw project wordt geplaatst.


Antwoord 9, autoriteit 2%

Zorg ervoor dat Devicesis gedefinieerd als een bronmap in de projecteigenschappen.


Antwoord 10, autoriteit 2%

Kreeg dezelfde soort fout, maar mijn pakket was absoluut correct. Wanneer ik zojuist mijn editor heb gesloten en geopend, verdwijnt de fout. Ik hoop dat dit in sommige scenario’s kan helpen.


Antwoord 11, autoriteit 2%

Ik heb dit opgelost door een “exclusief” kenmerk voor dat pakket te verwijderen in mijn .classpath-bestand. Verwijder het attribuut, niet de hele tag, anders is “src/java” niet langer een bronmap.

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

Antwoord 12, autoriteit 2%

Dit probleem is opgelost door de naam pakkette noemen

Ik heb mijn bestand Test_Steps.javaverplaatst dat zich onder pakket stepDefinition

bevond

voer hier de afbeeldingsbeschrijving in

door gewoon het pakket stepDefinitiontoe te voegen, is het probleem opgelost

Dit probleem kan dus optreden als je een pakket hebt en je gebruikt het niet in je klassenbestand.

Toevoegen heeft het probleem opgelost en de fout trad niet meer op.

voer hier de afbeeldingsbeschrijving in


Antwoord 13

Zorg ervoor dat u een correct pakket hebt gemaakt. Mogelijk krijgt u de kans om een ​​map te maken in plaats van een pakket


Antwoord 14

  1. Maak map [uw.project.naam] in de hoofdmap van de werkruimte van uw project.

  2. Kopieer *.java van “src” naar die map.

  3. Sluit en heropen project.


Antwoord 15

Dit overkwam mij toen ik een project uitcheckte vanuit een svn-repository in eclipse. Er waren jar-bestanden in mijn .m2-map waar Eclipse niet naar keek. Om het probleem op te lossen heb ik het volgende gedaan:

klik met de rechtermuisknop op de projectmap Configure > Converteren naar Maven Project

en dat loste het probleem op.


Antwoord 16

Er zijn een miljoen antwoorden, maar hier is er nog een:
kopieer de bestanden naar een nieuw pakket, verwijder het oude pakket en hernoem het nieuwe pakket naar de naam van het oude pakket.


Antwoord 17

Zorg ervoor dat u geen standaardpakket gebruikt. Maak een nieuw pakket met de naam ‘apparaten’ en kopieer deze code erin en gebruik.


Antwoord 18

Ik had dit soort situaties toen ik klassen uit andere pakketten/projecten kopieerde.

Menu->Project->Clean helpt meestal.


Antwoord 19

In mijn geval heb ik de foutmarkering op het tabblad Problemen geselecteerd en verwijderd omdat de hoofdmethode van het Java-bestand correct werd uitgevoerd. Dat is een storing in Eclipse Neon met de veelheid aan plug-ins die het heeft geïnstalleerd.


Antwoord 20

Ik had ook met dit probleem te maken toen ik een bestaand project had geïmporteerd om te verduisteren. Het was een geleidelijk project, maar tijdens het importeren importeerde ik het als een normaal project door op Algemeen-> Bestaande projecten in Workspace. Om het probleem op te lossen heb ik Gradle nature aan het project toegevoegd door:
:::: Klik met de rechtermuisknop op de projectmap -> Configureer-> Gradle Nature toevoegen


Antwoord 21

Ik gebruikte Spring Tool Suite 4. Ik kon het probleem niet achterhalen. De directorystructuur was volgens de pakketnaam.

Maar het opschonen van het project heeft me geholpen.


Antwoord 22

Ik had hetzelfde probleem met een maven-project in Eclipse IDE. Ik heb het kunnen oplossen door het .classpath-bestand te vervangen door het juiste formaat. Na het vervangen sluit en opent u het project.

Voorbeeld .classpath-bestand

<?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>

Antwoord 23

Misschien wilt u uw Java ‘buildpad’ in de projecteigenschappen controleren, als de ‘source’-directory (pad) daar niet correct is ingesteld, dan zal deze fout optreden voor alle klassen daarin.

Dus het pad moetde ‘root’ (bevattende) map specificeren waarin de bronnen in het pakket bestaan ​​…

Other episodes