Dodaj słoik zawierający iglu.ir.TermVector w ścieżce źródłowej projektu.
Harry Joy,
2
Jeśli masz pewność, że klasa jest zapewniona, spróbuj wyczyścić i odświeżyć wszystkie swoje projekty
Mirco
Stało się to ze względu na przechodnie zależności w moich słoikach
Janac Meena
dokładnie! ten słoik musi być obecny w zależnościach pom.xml.
gaurav
Odpowiedzi:
193
Oznacza to: „Klasa, której używasz, potrzebuje innej klasy, której nie ma w ścieżce klas”. Powinieneś upewnić się (jak sugeruje Harry Joy), aby dodać wymagany słoik do ścieżki klasy.
Uniwersalna i prosta odpowiedź, która bardzo mi pomaga w innym przypadku :) THX
Mariusz Chw
W szczególności, gdy próbujesz usunąć klasy, sprawdź klasy nadrzędne pod kątem odniesienia do brakującego typu. Jeśli nie zawsze to oznacza ta wiadomość, prawdopodobnie przez większość czasu.
butallmj
Tak, stwierdziłem, że było to spowodowane brakiem niektórych słoików w przywoływanych słoikach :) Dzięki.
Ali Imran
21
@Arne, dlaczego w takim razie mówi się o nim pośrednio ? Czy nie powinno być powiedziane, że w ogóle nie ma odniesienia?
Pacerier
2
@Pacerier, które nie byłyby prawdą. To nie twój kod bezpośrednio odwołuje się do tego typu, ale raczej coś, czego używa Twój kod, więc zależność twojego kodu od tego typu jest „tylko” przechodnia, ale ona istnieje. „Pośrednio” mówi, gdzie szukać.
hiergiltdiestfu
22
Jest to tak samo prawdopodobne, że Eclipse się myli, jak faktyczny błąd. Zignorowałem błąd i uruchomiłem usługę internetową, na której interfejs się skarżyłem, i działało dobrze, z wyjątkiem konieczności radzenia sobie z oknem dialogowym za każdym razem, gdy chciałem go uruchomić. Kolejny nieprzejrzysty błąd, który nic mi nie mówi.
Nie ma go też w słoiku. Jest w jednym z projektów zawartych we wszystkich zawartych projektach, gdzie ma to jakiekolwiek znaczenie.
Jerry Miller,
3
Doświadczyłem tego problemu w zaćmieniu, ale budowanie za pomocą maven działało dobrze. Poprawka polegała na usunięciu i ponownym zaimportowaniu projektu w obszarze roboczym zaćmienia, który zawierał wymagane klasy.
PiersyP
Może się to czasem zdarzać, ale napotkałem błędy, które dają tę samą odpowiedź, a projekt nie może zostać skompilowany.
Christopher Connery
13
Czasami mi się to zdarza, zawsze naprawiałem to za pomocą polecenia „mvn eclipse: clean”, aby wyczyścić stare właściwości, a następnie uruchomić mvn eclipse: eclipse -Dwtpversion = 2.0 (oczywiście dla projektu internetowego). Zapisano kilka starych właściwości, więc zaćmienie jest czasami mylone.
Wyczyściłem projekt (z projektu-> Wyczyść ...) i zadziałał.
Anu Shibin Joseph Raj
mvn eclipse:cleani / lub mvn eclipse:eclipsewydaje się magiczną sztuczką, aby to zadziałało.
Antoine Martin
13
Miałem ten błąd z powodu uszkodzonego lokalnego repozytorium maven .
Tak więc, aby rozwiązać problem, wszystko, co musiałem zrobić, to iść do mojego repozytorium i usunąć folder, w którym znajdował się dany plik .jar, a następnie wymusić włączenie update mavenw Eclipse.
To działało dla mnie, a przede wszystkim nie. Problem wystąpił, gdy jeden z moich kolegów z zespołu zaktualizował wersję repozytorium z pom.
iaL
8
Wygląda na to, że jest to znany problem (błąd 67414), który został rozwiązany w wersji 3.0 ... ktoś skomentował, że występuje on również w wersji 3.4.
W międzyczasie obejście polega na usunięciu biblioteki systemowej JRE z projektu, a następnie dodaniu jej ponownie.
Here are the steps:
Przejdź do właściwości projektu z błędem kompilacji (kliknij prawym przyciskiem myszy> Właściwości)
Wyświetl kartę „Biblioteki” w sekcji „Ścieżka kompilacji”
Znajdź na liście „Bibliotekę systemową JRE” (jeśli jej brakuje, to ten komunikat o błędzie nie jest błędem zaćmienia, ale źle skonfigurowanym projektem)
Usuń „bibliotekę systemową JRE”
Naciśnij „Dodaj bibliotekę ...”, wybierz „Bibliotekę systemową JRE” i dodaj odpowiednie środowisko JRE dla projektu (np. „Domyślne środowisko JRE obszaru roboczego”)
Naciśnij „Zakończ” w wyborze biblioteki i „OK” we właściwościach projektu, a następnie poczekaj na ponowną kompilację projektu
Tak. Miałem ten sam problem z Spring-web-3.0.1.RELEASE. Podczas gdy został zarejestrowany jako zależność w pom.xml i już działa jako zależność w niektórych odniesieniach, kiedy stworzyłem http.csrf (). disable (). cors (). disable (). httpBasic (). and (). authorizeRequests () .antMatchers (PUBLIC_MATCHERS) .permitAll (). anyRequest (). uwierzytelnione (); Zepsuł się. Następnie pobrałem plik jar i zaimportowałem go w tradycyjny, ręczny sposób.
Tsakiroglou Fotis
5
Ten błąd występuje, gdy klasy w pliku jar nie mają takiej samej struktury jak struktura folderów jar.
np. jeśli plik klasy ma pakiet com.test.exam, a plik klas.jar utworzony z tego pliku klasy ma strukturę test.exam ... zostanie zgłoszony błąd. Musisz poprawić strukturę pakietu swojego pliku klas.jar, a następnie dołączyć go do ścieżki kompilacji ecplipse ...
Miałem ciekawy przypadek tego problemu z Eclipse 4.4.2. Mój projekt (P1) odwoływał się do klasy zewnętrznej (projekt P2) za pomocą dwóch metod o tej samej nazwie, ale różnych typach argumentów:
public static void setItem(Integer id) …
public static void setItem(Item item) …
Ten typ Itembył zawarty w trzecim projekcie P3, którego nie chciałem tutaj widzieć. P1 wywołał tylko pierwszą metodę:
ExternalClass.setItem(Integer.valueOf(12345));
Tak więc druga metoda, która wykorzystała Itemklasę, nie została użyta i prawdą jest, że P3 nie było w ścieżce klas kompilacji - dlaczego miałoby to być, gdyby nie była używana.
Nadal Eclipse mi powiedział
The type ...Item cannot be resolved.
It is indirectly referenced from required .class files
Kompilacja z wiersza poleceń nie spowodowała takich problemów. Zmiana nazwy drugiej metody (nieużywanej tutaj!) Spowodowała, że problem zniknął również w Eclipse.
Dla mnie dzieje się tak, gdy aktualizuję jdk do wersji 1.8.0_60 z moim starym zestawem słoików używanym od dawna. Jeśli wrócę do jdk1.7.0_25, wszystkie te problemy zniknęły. Wydaje się, że jest problem z kompatybilnością środowiska JRE i bibliotek.
W moim przypadku stworzyłem projekt i wykonałem go minSdkVersion=9i targetSdkVersion=17. Użyłem automatycznie wygenerowany libs/android-support-v4.jar. Musiałem także skorzystać z ActionBarActivityużywania android-support-v7-appcomapt.jar. Właśnie skopiowałem android-support-v7-appcompat.jarplik z android-sdk/extras/andrid/support/v7/appcompat/libsfolderu i wkleiłem go do libsfolderu projektu . A to spowodowało powyższy błąd. Zasadniczo musiałem również umieścić android-support-v4.jarplik android-sdk/extras/andrid/support/v7/appcompat/libsw libsfolderze projektu . Według mojej wiedzy v7.jarplik miał zależności od v4.jarpliku. Potrzebował więc własnego v4.jarpliku, zamiast mojego projektu automatycznie utworzonego v4.jarpliku.
Szybko i prosto naprawiłem to w ten sposób (używam wersji ADT: v21.0.0-531062 w domowej wersji systemu Windows XP)
Otwarty plik manifestu.
Zmieniono istniejący projekt minSdkVersion na tę samą wartość, co maxSdkVersion (porada: warto utworzyć nowy projekt i sprawdzić, co to jest maxSdkVersion)
Zapisz plik manifestu.
Kliknij projekt prawym przyciskiem myszy i wybierz opcję Utwórz projekt.
Z górnego menu: Projekt - Wyczyść .. - zaznacz Tylko odpowiedni projekt, poniżej zaznaczyłem Rozpocznij kompilację natychmiast i Kompiluj tylko wybrane projekty i OK.
otwórz plik java - NIE ma już czerwonych błędów!
Wróć do kroku 1 powyżej i zmień wartość Back minSdkVersion na pierwotną wartość (aby zapewnić jak najwięcej wersji Androida).
Działało ALE problem powraca co kilka dni. Robię to samo co powyżej, co rozwiązuje i pozwala mi się rozwijać.
Oprócz sugerowanej już przyczyny braku pliku klasy błąd ten może również wskazywać na duplikat pliku klasy, środowisko eclipse zgłasza ten błąd, gdy plik klasy na ścieżce kompilacji używa innej klasy, która ma wiele definicji w ścieżce kompilacji.
Ponieważ podajesz nam bardzo mało szczegółów, najprawdopodobniej to, co zrobiłeś, co jest niezwykle łatwym błędem do popełnienia, to to, że zamiast udać się do
Build Path > Configure Build Path > Projects
i dodając stamtąd dodatkowy folder projektu, zamiast tego poszedłeś do
Build Path > Configure Build Path > Libraries
i zamiast tego dodał folder projektu.
Jest to z pewnością przypadek, jeśli cały kod jest poprawny, ale po automatycznej reorganizacji importów za pośrednictwem ctrl+space skrótu, zamiast instrukcji importu odnoszących się do com.your.additionalproject, wszystkie odniesienia wskazują na bin.com.your.additionalproject.
Zwróć uwagę na kosz. Oznacza to, że pośrednio odwołujesz się do swojej klasy, traktując inną strukturę folderów projektu jako bibliotekę, dzięki czemu Twoje IDE robi wszystko, aby znaleźć dokładnie binarną klasę, o której mówisz.
Aby to naprawić, usuń folder z bibliotek, a zamiast tego dodaj go na karcie Projekty i zreorganizuj import. Twój projekt powinien działać dobrze.
Gdy korzystam z nowej wersji zaćmienia i próbuję użyć poprzedniego obszaru roboczego, którego użyłem ze starą wersją zaćmienia, wystąpił ten błąd.
Oto jak rozwiązać problem:
Kliknij prawym przyciskiem myszy mój projekt w Eksploratorze pakietów -> Właściwości -> Ścieżka kompilacji Java -> Biblioteki -> Widzę błąd (znak krzyżykowy) w bibliotece systemowej JRE. Ponieważ nie można znaleźć ścieżki. -> Kliknij dwukrotnie bibliotekę systemową JRE -> Wybierz opcję „Domyślne środowisko JRE obszaru roboczego” -> Zakończ -> OK. -> BUM TO DZIAŁA
W moim przypadku było to wynikiem dodania nowej zależności do mojego pom.xmlpliku.
Nowa zależność zależała od starej wersji biblioteki (2.5). Ta sama biblioteka była wymagana przez inną bibliotekę w mojej pom.xml, ale wymagała wersji 3.0.
Z jakiegoś powodu, gdy Maven napotyka te konflikty, po prostu pomija najnowszą wersję. W Eclipse podczas przeglądania pom.xmlmożesz wybrać zakładkę „hierarchia zależności” u dołu, aby zobaczyć, jak zależności są rozwiązywane. Tutaj dowiesz się, czy omawiana biblioteka (a tym samym klasa) została pominięta z tego powodu.
W moim przypadku było to tak proste, jak zablokowanie nowszej wersji. Możesz to zrobić, klikając wpis prawym przyciskiem myszy - istnieje możliwość zablokowania go w menu kontekstowym.
Odpowiedzi:
Oznacza to: „Klasa, której używasz, potrzebuje innej klasy, której nie ma w ścieżce klas”. Powinieneś upewnić się (jak sugeruje Harry Joy), aby dodać wymagany słoik do ścieżki klasy.
źródło
Jest to tak samo prawdopodobne, że Eclipse się myli, jak faktyczny błąd. Zignorowałem błąd i uruchomiłem usługę internetową, na której interfejs się skarżyłem, i działało dobrze, z wyjątkiem konieczności radzenia sobie z oknem dialogowym za każdym razem, gdy chciałem go uruchomić. Kolejny nieprzejrzysty błąd, który nic mi nie mówi.
źródło
Czasami mi się to zdarza, zawsze naprawiałem to za pomocą polecenia „mvn eclipse: clean”, aby wyczyścić stare właściwości, a następnie uruchomić mvn eclipse: eclipse -Dwtpversion = 2.0 (oczywiście dla projektu internetowego). Zapisano kilka starych właściwości, więc zaćmienie jest czasami mylone.
źródło
mvn eclipse:clean
i / lub mvneclipse:eclipse
wydaje się magiczną sztuczką, aby to zadziałało.Miałem ten błąd z powodu uszkodzonego lokalnego repozytorium maven .
Tak więc, aby rozwiązać problem, wszystko, co musiałem zrobić, to iść do mojego repozytorium i usunąć folder, w którym znajdował się dany plik .jar, a następnie wymusić włączenie
update maven
w Eclipse.źródło
Wygląda na to, że jest to znany problem (błąd 67414), który został rozwiązany w wersji 3.0 ... ktoś skomentował, że występuje on również w wersji 3.4.
W międzyczasie obejście polega na usunięciu biblioteki systemowej JRE z projektu, a następnie dodaniu jej ponownie.
Przejdź do właściwości projektu z błędem kompilacji (kliknij prawym przyciskiem myszy> Właściwości)
Wyświetl kartę „Biblioteki” w sekcji „Ścieżka kompilacji”
Znajdź na liście „Bibliotekę systemową JRE” (jeśli jej brakuje, to ten komunikat o błędzie nie jest błędem zaćmienia, ale źle skonfigurowanym projektem)
Usuń „bibliotekę systemową JRE”
Naciśnij „Dodaj bibliotekę ...”, wybierz „Bibliotekę systemową JRE” i dodaj odpowiednie środowisko JRE dla projektu (np. „Domyślne środowisko JRE obszaru roboczego”)
Naciśnij „Zakończ” w wyborze biblioteki i „OK” we właściwościach projektu, a następnie poczekaj na ponowną kompilację projektu
Mam nadzieję, że błąd zostanie rozwiązany ...
źródło
Ten błąd występuje, gdy klasy w pliku jar nie mają takiej samej struktury jak struktura folderów jar.
np. jeśli plik klasy ma pakiet com.test.exam, a plik klas.jar utworzony z tego pliku klasy ma strukturę test.exam ... zostanie zgłoszony błąd. Musisz poprawić strukturę pakietu swojego pliku klas.jar, a następnie dołączyć go do ścieżki kompilacji ecplipse ...
źródło
Dostałem ten wyjątek, ponieważ środowisko Eclipse działało w innej wersji jdk, po prostu zmieniło się na poprawne, czyste i kompilowane i działało!
źródło
Miałem ciekawy przypadek tego problemu z Eclipse 4.4.2. Mój projekt (P1) odwoływał się do klasy zewnętrznej (projekt P2) za pomocą dwóch metod o tej samej nazwie, ale różnych typach argumentów:
Ten typ
Item
był zawarty w trzecim projekcie P3, którego nie chciałem tutaj widzieć. P1 wywołał tylko pierwszą metodę:Tak więc druga metoda, która wykorzystała
Item
klasę, nie została użyta i prawdą jest, że P3 nie było w ścieżce klas kompilacji - dlaczego miałoby to być, gdyby nie była używana.Nadal Eclipse mi powiedział
Kompilacja z wiersza poleceń nie spowodowała takich problemów. Zmiana nazwy drugiej metody (nieużywanej tutaj!) Spowodowała, że problem zniknął również w Eclipse.
źródło
Naprawiłem to
right clicking on project > Maven > Update Project
źródło
Jeśli nadal nie możesz znaleźć nic złego w konfiguracji, możesz spróbować Projekt -> Wyczyść i wyczyść wszystkie projekty w obszarze roboczym.
EDYCJA: Przepraszam, nie widziałem sugestii verbose_mode ... tego samego
źródło
Dla mnie dzieje się tak, gdy aktualizuję jdk do wersji 1.8.0_60 z moim starym zestawem słoików używanym od dawna. Jeśli wrócę do jdk1.7.0_25, wszystkie te problemy zniknęły. Wydaje się, że jest problem z kompatybilnością środowiska JRE i bibliotek.
źródło
Wystąpił błąd, gdy zmieniam tylko niektóre ustawienia svn, a nie nic w kodzie. Samo czyszczenie projektów naprawiło błąd.
źródło
W moim przypadku stworzyłem projekt i wykonałem go
minSdkVersion=9
itargetSdkVersion=17
. Użyłem automatycznie wygenerowanylibs/android-support-v4.jar
. Musiałem także skorzystać zActionBarActivity
używaniaandroid-support-v7-appcomapt.jar
. Właśnie skopiowałemandroid-support-v7-appcompat.jar
plik zandroid-sdk/extras/andrid/support/v7/appcompat/libs
folderu i wkleiłem go dolibs
folderu projektu . A to spowodowało powyższy błąd. Zasadniczo musiałem również umieścićandroid-support-v4.jar
plikandroid-sdk/extras/andrid/support/v7/appcompat/libs
wlibs
folderze projektu . Według mojej wiedzyv7.jar
plik miał zależności odv4.jar
pliku. Potrzebował więc własnegov4.jar
pliku, zamiast mojego projektu automatycznie utworzonegov4.jar
pliku.źródło
Szybko i prosto naprawiłem to w ten sposób (używam wersji ADT: v21.0.0-531062 w domowej wersji systemu Windows XP)
Działało ALE problem powraca co kilka dni. Robię to samo co powyżej, co rozwiązuje i pozwala mi się rozwijać.
źródło
Oprócz sugerowanej już przyczyny braku pliku klasy błąd ten może również wskazywać na duplikat pliku klasy, środowisko eclipse zgłasza ten błąd, gdy plik klasy na ścieżce kompilacji używa innej klasy, która ma wiele definicji w ścieżce kompilacji.
źródło
Ponieważ podajesz nam bardzo mało szczegółów, najprawdopodobniej to, co zrobiłeś, co jest niezwykle łatwym błędem do popełnienia, to to, że zamiast udać się do
Build Path > Configure Build Path > Projects
i dodając stamtąd dodatkowy folder projektu, zamiast tego poszedłeś do
Build Path > Configure Build Path > Libraries
i zamiast tego dodał folder projektu.
Jest to z pewnością przypadek, jeśli cały kod jest poprawny, ale po automatycznej reorganizacji importów za pośrednictwem
ctrl+space
skrótu, zamiast instrukcji importu odnoszących się do com.your.additionalproject, wszystkie odniesienia wskazują na bin.com.your.additionalproject.Zwróć uwagę na kosz. Oznacza to, że pośrednio odwołujesz się do swojej klasy, traktując inną strukturę folderów projektu jako bibliotekę, dzięki czemu Twoje IDE robi wszystko, aby znaleźć dokładnie binarną klasę, o której mówisz.
Aby to naprawić, usuń folder z bibliotek, a zamiast tego dodaj go na karcie Projekty i zreorganizuj import. Twój projekt powinien działać dobrze.
źródło
Gdy korzystam z nowej wersji zaćmienia i próbuję użyć poprzedniego obszaru roboczego, którego użyłem ze starą wersją zaćmienia, wystąpił ten błąd.
Oto jak rozwiązać problem:
Kliknij prawym przyciskiem myszy mój projekt w Eksploratorze pakietów -> Właściwości -> Ścieżka kompilacji Java -> Biblioteki -> Widzę błąd (znak krzyżykowy) w bibliotece systemowej JRE. Ponieważ nie można znaleźć ścieżki. -> Kliknij dwukrotnie bibliotekę systemową JRE -> Wybierz opcję „Domyślne środowisko JRE obszaru roboczego” -> Zakończ -> OK. -> BUM TO DZIAŁA
Do Twojej wiadomości
źródło
W moim przypadku było to wynikiem dodania nowej zależności do mojego
pom.xml
pliku.Nowa zależność zależała od starej wersji biblioteki (2.5). Ta sama biblioteka była wymagana przez inną bibliotekę w mojej
pom.xml
, ale wymagała wersji 3.0.Z jakiegoś powodu, gdy Maven napotyka te konflikty, po prostu pomija najnowszą wersję. W Eclipse podczas przeglądania
pom.xml
możesz wybrać zakładkę „hierarchia zależności” u dołu, aby zobaczyć, jak zależności są rozwiązywane. Tutaj dowiesz się, czy omawiana biblioteka (a tym samym klasa) została pominięta z tego powodu.W moim przypadku było to tak proste, jak zablokowanie nowszej wersji. Możesz to zrobić, klikając wpis prawym przyciskiem myszy - istnieje możliwość zablokowania go w menu kontekstowym.
źródło
Wskaż JRE na ścieżce kompilacji na JDK. To działało dla mnie.
źródło