Używam Eclipse i od jakiegoś czasu nie korzystam z Javy. Jednak mogę skompilować mój kod w wierszu poleceń i wygenerować niezbędne .class
pliki. W Eclipse narzeka na to The declared package "Devices" does not match the expected package ""
. Co to oznacza i jak mogę to naprawić?
Przykładowy kod:
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;
}
}
Nazwa mojego projektu to DeviceDDS
.
/src/Converters
katalogu?Odpowiedzi:
Eclipse oczekuje, że zadeklarowany pakiet będzie zgodny z hierarchią katalogów - więc oczekuje, że plik Java będzie znajdować się w katalogu o nazwie „Urządzenia” w katalogu głównym źródła. W tej chwili wygląda na to, że plik znajduje się bezpośrednio w katalogu źródłowym. Stwórz więc odpowiedni katalog i przenieś tam plik.
Zwróć uwagę, że zwykle pakiety są pisane małymi literami i zawierają nazwę Twojej organizacji w odwrotnej kolejności DNS, np
źródło
Spróbuj zamknąć i ponownie otworzyć plik.
Ten błąd może wystąpić podczas zaćmienia, gdy nie ma absolutnie nic złego w lokalizacji pliku lub deklaracji pakietu. Wypróbuj to, zanim spędzisz dużo czasu na wypróbowaniu innych rozwiązań. Czasami zaćmienie jest po prostu zdezorientowane. U mnie to działało przy wielu okazjach. Mam kredyt pomysł na Joshua Goldberg .
źródło
Rozwiązanie 1: Jedno rozwiązanie, które zadziałało, gdy pojawił się ten błąd „ Zadeklarowany pakiet nie pasuje do oczekiwanego pakietu ” dla projektu, który pobrałem z eclipse CVS:
1. Kliknij projekt prawym przyciskiem myszy na pasku nawigacji i kliknij 'usuń'
2.Upewnij się, że opcja ' Usuń zawartość projektu z dysku ' NIE jest zaznaczona i kliknij OK.
3. Teraz po usunięciu projektu przejdź do Plik -> Importuj -> Ogólne -> Istniejące projekty do obszaru roboczego
4. Wybierz swój obszar roboczy z listy katalogów i zaznacz pole obok nazwy projektu. Kliknij „ Zakończ ”
Rozwiązanie 2: Po raz kolejny otrzymałem ten błąd z następującym komunikatem
Błędy kompilacji Eclipse - nie można rozwiązać obiektu java.lang.Object Musiałem skorzystać z innej trasy, o której wspomniano tutaj, a błąd zniknął.
W międzyczasie obejście polega na usunięciu biblioteki systemowej JRE z projektu, a następnie ponownym dodaniu jej. Oto kroki:
Mam nadzieję, że błąd zostanie rozwiązany ...
źródło
Rozwiązałem problem, wykonując następujące kroki:
Wybierz projekt - kliknij prawym przyciskiem myszy - ścieżka budowania java.
W zakładce Źródło - możliwość zmiany
src
nasrc/main/java
.Eclipse zmieni kolejność całego projektu.
źródło
Miałem ten problem - inne klasy w moim pakiecie były w porządku, ale jedna klasa miała błąd przeciwko temu. Nie było nic złego w deklaracji paczki.
Naprawiłem to robiąc
refactor->move
i tymczasowo przeniosłem klasę do innego pakietu, a następnie zrefactor->move
powrotem do oryginalnego pakietu.źródło
Musisz mieć klasę w folderze
Devices
.źródło
Utwórz nowy pakiet w ramach swojego projektu o nazwie „Urządzenia” i umieść w nim swoją klasę. Jest to odpowiednik umieszczenia klasy w katalogu o nazwie „Urządzenia” w folderze źródłowym projektu.
źródło
Upewnij się, że
Devices
jest zdefiniowany jako folder źródłowy we właściwościach projektu.źródło
Wystąpił ten sam rodzaj błędu, ale mój pakiet był całkowicie poprawny. Kiedy właśnie zamknąłem i otworzyłem mój edytor, błąd znika. Mam nadzieję, że może to pomóc w niektórych scenariuszach.
źródło
Naprawiłem to, usuwając atrybut „wykluczający” dla tego pakietu w moim
.classpath
pliku. Usuń atrybut, a nie cały tag, w przeciwnym razie „src / java” przestanie być folderem źródłowym.<classpathentry excluding="com/myproject/mypackage/mysubpackage/" kind="src" path="src/java"/>
źródło
Ten problem został rozwiązany przez podanie nazwy pakietu
Przeniosłem plik Test_Steps.java, który znajdował się w pakiecie stepDefinition
po prostu dodając pakiet stepDefinition problem został rozwiązany
Więc ten problem może wystąpić, gdy masz pakiet i nie używasz go w pliku klasy.
Dodanie go rozwiązało problem i błąd już się nie pojawiał.
źródło
Upewnij się, że utworzyłeś poprawny pakiet, możesz mieć szansę na utworzenie folderu zamiast pakietu
źródło
Utwórz katalog [nazwa.projektu] w katalogu głównym obszaru roboczego projektu.
Skopiuj * .java z „src” do tego katalogu.
Zamknij i ponownie otwórz projekt.
źródło
Zdarzyło mi się to, gdy sprawdzałem projekt z repozytorium svn w Eclipse. W moim folderze .m2 znajdowały się pliki jar, na które eclipse nie patrzył. Aby rozwiązać problem, który zrobiłem:
kliknij prawym przyciskiem folder projektu Konfiguruj> Konwertuj na projekt Maven
i to rozwiązało problem.
źródło
Jest milion odpowiedzi, ale oto kolejna: skopiuj pliki do nowego pakietu, usuń stary pakiet i zmień nazwę nowego pakietu na nazwę starego pakietu.
źródło
Upewnij się, że nie używasz domyślnego pakietu. Utwórz nowy pakiet o nazwie „urządzenia”, skopiuj do niego ten kod i użyj.
źródło
Miałem takie sytuacje, kiedy kopiowałem klasy z innych pakietów / projektów.
Menu-> Projekt-> Wyczyść zwykle pomaga.
źródło
W moim przypadku wybrałem znacznik błędu w zakładce Problemy i usunąłem go, ponieważ główna metoda pliku Java była wykonywana poprawnie. To pewna usterka w Eclipse Neon z wieloma zainstalowanymi wtyczkami.
źródło
Miałem też do czynienia z tym problemem, kiedy importowałem istniejący projekt do Eclipse. To był projekt gradle, ale podczas importowania zaimportowałem go jako zwykły projekt, klikając Ogólne-> Istniejące projekty do obszaru roboczego. Aby rozwiązać ten problem, dodałem Gradle nature do projektu przez :::: Kliknij prawym przyciskiem myszy folder Project -> Configure-> Add Gradle Nature
źródło
Używałem Spring Tool Suite 4. Nie mogłem rozwiązać problemu. Struktura katalogów była zgodna z nazwą pakietu.
źródło
Miałem ten sam problem z projektem maven w Eclipse IDE. Udało mi się go rozwiązać, zastępując plik .classpath odpowiednim formatem. Po wymianie zamknij i otwórz projekt.
Przykładowy plik .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>
źródło