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 schijf‘ NIETis 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:
- 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)
- Verwijder de “JRE-systeembibliotheek”
- Klik op “Bibliotheek toevoegen …”, selecteer “JRE-systeembibliotheek” en voeg de juiste JRE voor het project toe (bijv. ‘Werkruimte standaard JRE’)
- 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:
-
Selecteer het project – Klik met de rechtermuisknop – Java build-pad.
-
Op het tabblad Bron – verander je de
src
insrc/main/java
. -
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->move
te doen en de klasse tijdelijk naar een ander pakket te verplaatsen, en vervolgens refactor->move
terug 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 Devices
hebben.
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 Devices
is 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
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.
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
-
Maak map [uw.project.naam] in de hoofdmap van de werkruimte van uw project.
-
Kopieer *.java van “src” naar die map.
-
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 …