Symptomy doskonale opisują przypadek, gdy znaleziona klasa nie ma powiązanego (lub przypisanego) źródła.
- Możesz powiązać źródła klas JDK w Preferencje> Java> Zainstalowane środowisko JRE . Jeśli JRE (nie JDK) zostanie wykryty jako domyślny JRE do użycia, twoje klasy JDK nie będą miały dołączonych źródeł. Zauważ, że nie wszystkie klasy JDK mają źródła, niektóre z nich są dystrybuowane tylko w formie binarnej.
- Klasy ze ścieżki kompilacji projektu dodane ręcznie wymagają ręcznego dołączenia powiązanego źródła. Źródło może znajdować się w pliku zip lub jar, w obszarze roboczym lub w systemie plików. Eclipse skanuje zip, więc twoje źródła nie muszą na przykład znajdować się w katalogu głównym pliku archiwum.
- Klasy z zależności pochodzących z innych wtyczek (maven, PDE itp.). W takim przypadku to od wtyczki zależy, w jaki sposób zostanie podane źródło.
- Środowisko PDE wymaga, aby każda wtyczka miała odpowiedni pakiet XXX.source , który zawiera źródło wtyczki. Więcej informacji można znaleźć tutaj i tutaj .
- m2eclipse może pobierać źródła i javadocs dla zależności Maven, jeśli są one dostępne. Ta funkcja powinna być włączona w preferencjach m2eclipse (opcja nosiła nazwę „ Pobierz źródło i javadocs ”).
- W przypadku innych wtyczek należy zapoznać się z ich dokumentacją
- Klasy, które są ładowane z twojego projektu są automatycznie dopasowywane do źródeł z projektu.
Ale co, jeśli Eclipse nadal sugeruje dołączenie źródła, nawet jeśli poprawnie ustawię swoje klasy i ich źródła:
To prawie zawsze oznacza, że Eclipse znajduje klasę z innego miejsca niż się spodziewasz. Sprawdź źródłową ścieżkę wyszukiwania, aby zobaczyć, gdzie może dojść do niewłaściwej klasy. Zaktualizuj ścieżkę zgodnie z ustaleniami.
Zaćmienie nie znajduje niczego, gdy zostanie osiągnięty punkt przerwania:
Dzieje się tak, gdy źródłowa ścieżka wyszukiwania nie zawiera klasy, która jest aktualnie ładowana w środowisku wykonawczym. Nawet jeśli klasa znajduje się w obszarze roboczym, może być niewidoczna dla konfiguracji uruchamiania, ponieważ Eclipse ściśle przestrzega ścieżki wyszukiwania źródła i dołącza tylko zależności projektu, który jest obecnie debugowany.
Wyjątkiem są pakiety debugujące w PDE . W tym przypadku, ponieważ środowisko wykonawcze składa się z wielu projektów, które nie muszą deklarować wzajemnych zależności, Eclipse automatycznie znajdzie klasę w obszarze roboczym, nawet jeśli nie jest ona dostępna w źródłowej ścieżce wyszukiwania.
Nie widzę zmiennych, gdy uderzę w punkt przerwania lub po prostu otwiera źródło, ale nie wybiera linii punktu przerwania:
Oznacza to, że w środowisku wykonawczym ani JVM, ani same klasy nie mają niezbędnych informacji debugowania. Za każdym razem, gdy kompilowane są klasy, można dołączyć informacje debugowania. Aby zmniejszyć przestrzeń dyskową klas, czasami informacje te są pomijane, co sprawia, że debugowanie takiego kodu jest uciążliwe. Jedyną szansą jest próba ponownej kompilacji z włączonym debugowaniem.
Przeglądarka źródeł Eclipse pokazuje inne linie niż te, które są faktycznie wykonywane:
Czasami może pokazywać, że jest również wykonywane puste miejsce. Oznacza to, że twoje źródła nie pasują do twojej wersji środowiska wykonawczego klas. Nawet jeśli uważasz, że nie jest to możliwe, upewnij się, że skonfigurowałeś właściwe źródła. Lub środowisko wykonawcze pasuje do najnowszych zmian, w zależności od tego, co próbujesz zrobić.