Eclipse: zadeklarowany pakiet nie jest zgodny z oczekiwanym pakietem

86

Mam problem z importowaniem projektu zewnętrznego. Idę Plik -> Importuj ... -> Istniejące projekty do obszaru roboczego, wybieram folder, w którym znajduje się projekt i wszystko jest importowane - ale nazwy pakietów projektu nie wydają się zgodne z oczekiwaniami Eclipse. Wszystkie nazwy pakietów mają przedrostek:

prefix.packagename1
prefix.packagename2

itp.

Ale Eclipse tego oczekuje

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

itd., ponieważ katalog to src / prefix1 / prefix / package1

Naprawdę nie chcę bawić się zewnętrznym kodem. Jak nakazać Eclipse ignorowanie katalogu „src / prefix1”? Albo co jeszcze mogę zrobić?

HenryNguyen
źródło
Dodałem package (name of package under which the file to be ) na początku pliku
Sai Ram

Odpowiedzi:

105

Po prostu przejdź do ścieżki kompilacji i zmień ścieżkę źródłową na src/prefix1zamiast src.

Najłatwiej jest kliknąć srckatalog prawym przyciskiem myszy i wybrać „Buduj ścieżkę / Usuń ze ścieżki budowania”, a następnie znajdź src/prefix1katalog, kliknij go prawym przyciskiem myszy i wybierz „Buduj ścieżkę / Użyj jako folderu źródłowego”.

Jon Skeet
źródło
2
Jak mogę cofnąć to, co właśnie zrobiłem? Kliknąłem na „Build Path / Use as source folder” i nic już nie działa. Edycja: odpowiedzią na moje pytanie jest przejście do „Konfiguruj ścieżkę budowania” i usunięcie z listy funky, która nie jest src / ani gen /
ArtOfWarfare
25
Zauważ, że sugestia Jona działa, ale może wymagać ponownego uruchomienia zaćmienia.
Samik R
1
!! Jeśli nadal widzisz błąd po zmianie folderu źródłowego, skompiluj projekt. Eclipse czasami sprawia, że ​​chcę coś rozwalić.
MattC
4
Zamknij / Otwórz prj zadziałało dla mnie ... Zaćmienie to duże narzędzie, czasami może o
czymś
Dzięki kolego, świetne rozwiązanie.
Runcorn
70

Właśnie napotkałem ten problem, a ponieważ rozwiązanie pana Skeeta nie zadziałało dla mnie, opowiem, jak rozwiązałem ten problem.

Okazuje się, że otworzyłem plik java pod 'src' przed zadeklarowaniem go jako katalogu źródłowego.

Po kliknięciu prawym przyciskiem katalogu „src” w środowisku eclipse, wybraniu „ścieżki budowania”, a następnie „Użyj jako folderu źródłowego”

Zamknij i ponownie otwórz już otwarty plik java (odświeżanie F5 nie działało).

Podana ścieżka do pliku java począwszy od „prefix1” jest zgodna z pakietem w pliku (przykład z pytania żądającego prefix1.prefix.packagename2). To powinno działać

Eclipse nie powinno już narzekać na „src”.

Kyle Shanafelt
źródło
1
To było to. Całkiem proste, ale utknąłem na chwilę. Dzięki!
Christian Vielma,
Po ustawieniu ścieżki budowania zamknięcie i ponowne otwarcie pliku było dla mnie konieczne. Dzięki!
wyd-
Tak! U mnie też zadziałało.
Robert Casey
11

Przenieś problematyczne pliki * .java do innego folderu.

Kliknij element „src” i naciśnij „F5”.

Czerwone krzyże znikną.

Umieść pliki * .java w „ścieżce pakietu”, kliknij element „src” i naciśnij „F5”.

Wszystko powinno być w porządku.

Vlad
źródło
2

Jeśli zaimportowałeś istniejący projekt, po prostu usuń foldery źródłowe, a następnie dodaj je ponownie, aby utworzyć ścieżkę do budowania i ponownie uruchom Eclipse. W większości przypadków zaćmienie będzie wyświetlało błąd do momentu ponownego uruchomienia.

Parveen Yadav
źródło
1

Zdarza się dla mnie po nieudanych kompilacjach uruchamianych poza IDE. Jeśli czyszczenie obszaru roboczego nie działa, spróbuj: 1) Usuń wszystkie projekty 2) Zamknij i uruchom ponownie STS / eclipse, 3) Ponownie zaimportuj projekty

Bradley D.
źródło
1

Jedyne, co mi pomogło, to usunięcie projektu, a następnie ponowne zaimportowanie go. Działa jak marzenie :)

Szczupły
źródło
0

Ten problem pojawia się w Eclipse czasami podczas importowania projektu Androida, który nie ma pliku .classpath. Ten, który tworzy Eclipse, nie jest dokładnie tym samym, czego oczekuje Android. Jednak pliki .classpath systemu Android są zwykle wszystkie względne, więc po prostu kopiuję poprawny plik .classpath z innego projektu do nieprawidłowej ścieżki .classpath. Stworzyłem film, który pokazuje, jak to robię: https://www.youtube.com/watch?v=IVIhgeahS1Ynto

user3649912
źródło
0

Załóżmy, że Twój projekt ma pakiet taki jak package name1.name2.name3.name4 (zadeklarowany pakiet)

Eksplorator pakietów wyświetla
pakiety
podrzędne najwyższego poziomu o nazwie nazwa1.nazwa2 o nazwie nazwa3.nazwa4

Wystąpią błędy, ponieważ Eclipse wyodrębnia nazwę pakietu ze struktury katalogów plików na dysku, zaczynając od punktu, z którego importujesz.

Mój przypadek był nieco bardziej skomplikowany, być może dlatego, że użyłem symbolicznego łącza do folderu poza moim obszarem roboczym.

Najpierw próbowałem Build Path.Java Build Path.Source Tab.Link Source Button.Browse do folderu przed name1 w swoim pakiecie.Folder-name, jak chcesz (tak myślę). Ale miał problemy.

Następnie usunąłem folder ze ścieżki kompilacji i spróbowałem Plik> Importuj ...> Ogólne> System plików> kliknij Dalej> Z katalogu> Przeglądaj ... do folderu nad nazwą 1> kliknij przycisk Zaawansowane> zaznacz Utwórz łącza w obszarze roboczym> kliknij Zakończ przycisk.

darKoram
źródło
Prawdziwe. W moim przypadku do nazwy projektu dodano postfiks -2.0.0-SNAPSHOT. Usunięto ten prefiks (zmień nazwę projektu ...) i wszystko działało.
JRun
0

Przejdź do folderu src projektu i skopiuj z niego cały kod do jakiejś tymczasowej lokalizacji i skompiluj projekt. A teraz skopiuj rzeczywisty kod z tymczasowej lokalizacji do projektu src. I ponownie uruchom kompilację. Problem zostanie rozwiązany.

Uwaga: dotyczy to zaćmień.

Deepak Gupta
źródło
0

Właśnie teraz miałem ten sam problem. Jednak kilka pierwszych odpowiedzi nie działa dla mnie. Proponuję rozwiązanie: zmień plik .classpath.Na przykład możesz zdefiniować ścieżkę węzła classpathentry w następujący sposób: path = "src / prefix1 / java" lub path = " src / prefix1 / resources ”. Mam nadzieję, że to pomoże.

Jacek
źródło
0

Dla mnie problem polegał na tym, że konwertowałem istniejący projekt na maven, utworzyłem struktury folderów zgodnie z dokumentacją i pokazywał folder „główny” jako część pakietu. Postępowałem zgodnie z instrukcjami podobnymi do Jon Skeet / JWoodchuck i przeszedłem do ścieżki kompilacji Java, usunąłem wszystkie uszkodzone ścieżki kompilacji, a następnie dodałem moją ścieżkę kompilacji do `` src / main / java '' i `` src / test / java '' jako foldery zasobów dla każdego i rozwiązało problem.

Douglas Larson
źródło
0

Ścieżka budowania powinna zawierać ścieżkę poprzedzającą nazwę pakietu.

Na przykład, jeśli struktura folderów jest następująca: src/main/java/com/example/dao Jeśli klasa zawierająca instrukcję importu 'package com.example.dao'zgłasza błąd dotyczący nieprawidłowego pakietu, ścieżka budowania include:src/main/java powinna rozwiązać problem.

Sobin George
źródło
-1
  1. Kliknij prawym przyciskiem myszy folder zewnętrzny, w którym znajduje się pakiet
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. Kliknij Ścieżka kompilacji -> Usuń ze ścieżki kompilacji.

  2. Teraz przejdź do folderu prefix1 w sekcji folderu projektu.

  3. Kliknij go prawym przyciskiem myszy -> Ścieżka kompilacji -> Użyj jako folderu źródłowego.

  4. Gotowe. Folder pakietu nie będzie teraz pokazywał żadnego błędu. Jeśli nadal się wyświetla, po prostu uruchom ponownie projekt.

Pramod Shetty
źródło