2011-06-01 17 views
7

Dyskutując another question spytałem @Aaron Digulla wskazał, co następuje:Jak mogę sprawdzić status symbolu debugowania za pomocą Eclipse?

Po zainstalowaniu Java SDK, nie powinno być „src.zip” plik w katalogu głównym instalacji Java. Jeśli go nie ma, pobierz ponownie Java. Eclipse powinien znaleźć źródło automatycznie i pokazać je po otwarciu tablicy JTable typu (lub po kliknięciu linii na wykresie stosu).

Plik src.zip jest obecny dla mnie, ale wciąż nie może uzyskać dostępu do źródła z JTable jak @Aaron powiedział. Jaki może być problem? Jak mogę rozwiązać to za pomocą Eclipse?

Mimo to niepokoi mnie "Nieznane źródło", . oznacza to, że Twoja wersja Java nie ma symboli debugowania. Upewnij się, że : a) użyjesz SDK, podczas gdy rozwijasz, b) że twój SDK zawiera symboli debugowania, c) nie mów java polecenia rozebrania symboli debugowania podczas ładowania klas.

a) Używam Eclipse, dlaczego nie powinienem używać SDK?

b) Jak mogę się dowiedzieć, czy mój SDK zawiera symbole debugowania? A jeśli nie, jak mogę je dodać?

c) Jak mogę sprawdzić, czy Eclipse mówi java, aby usunąć symbole debugowania?

Przepraszamy za te banalne pytania, ale czuję, że nie rozumiem w pełni procesu programowania Java.

+0

Czy otworzyłeś 'src.zip'? Co jest w środku? – Pops

+0

@ Lord Torgamus: otwarty, tak. Są źródła. – Heisenbug

+0

Dlaczego więc nie możesz uzyskać dostępu do źródła 'JTable'? Proszę być bardziej konkretnym. – Pops

Odpowiedz

6

a) Eclipse zawiera własny kompilator Java, więc jeśli korzystasz z Java Runtime Environment, nie napotkasz na wiele problemów, z wyjątkiem tego, że brakuje dodatków, takich jak jarsigner i ewentualnie kod źródłowy JRE. Najlepszym sposobem weryfikacji instalacji jest menedżer pakietów; jednak, jeśli zainstalowałeś je w jakiś inny sposób, staranna obserwacja katalogu może zwykle odróżnić te dwa (patrz poniżej).

b) Biblioteki JRE są zazwyczaj kompilowane bez obecności symboli debugowania. Biblioteki SDK zazwyczaj je mają. Debugowanie Java odbywa się poprzez uruchomienie JVM z opcjami wiersza poleceń, które otwierają port debugowania. SDK rozmawia z maszyną JVM żądającą punktów przerwania ustawianych przez ten port. Później, jeśli zdecydujesz się na krok JVM, wysyła on również polecenia step/jump/rewind debugging przez ten port. Symbole "debugowania" są w rzeczywistości tabelami kodów bajtowych JVM, które wskazują, która linia kodu źródłowego zaczyna działać od konkretnej instrukcji kodu bajtowego. Dzięki temu debuggery mogą powiązać działające kody bajtowe z numerami linii w oryginalnym kodzie źródłowym.

c) Zweryfikuj za pomocą (z menu) Okno-> Preferencje (w kolumnie wyboru) rozwiń "Java", rozwiń "Ścieżka kompilacji" w "Jawa" i wybierz "Zmienne ClassPath". Zobaczysz kilka zmiennych, w tym jedną o nazwie "JRE_SRC", która powinna wskazywać plik src.zip zawierający publiczny kod biblioteki JRE. Warto zweryfikować JRE_LIB w tym samym czasie.

Katalog domowy JDK zwykle zawiera podkatalog "bin" i podkatalog "jre", więc jeśli widzisz tylko podkatalog "bin", szanse na to, że znajdujesz się w katalogu domowym JRE. Mając tę ​​wiedzę, miejmy nadzieję, że będziesz w stanie wymyślić resztę.

+0

+1 dziękuję bardzo za pomoc. Teraz wszystko jest bardziej jasne. JRC_SRC jest w rzeczywistości pusty, naprawię to. Jeszcze jedno pytanie: Myślę, że używam bibliotek JRE, a nie SDK, jak to zmienić? – Heisenbug

+0

@ 0verbose, najpierw pobierz JDK i zainstaluj go. Jeśli korzystasz z systemu Linux, Windows lub Solaris, pobierz pakiet SUN/Oracle JDK. W przypadku czegoś innego należy zapoznać się z instrukcjami producenta JDK. Następnie zanotuj katalog "root" JDK. Z tego samego kontekstu "Java" w oknie konfiguracji wybierz "zainstalowane środowiska JRE" i dodaj swój katalog główny JDK. Zaznacz pole obok JRE, aby ustawić domyślne dla nowych projektów. Następnie wróć i ustaw poziom kompilacji "Kompilator" na poziom kompilacji JDK. Na koniec może być konieczne ustawienie ścieżki budowania istniejących projektów zgodnie z nowymi ustawieniami. –

1

Przejdź do preferencji (Okno -> Preferencje) i wpisz "JRE" w polu wyszukiwania.

Wybierz "Zainstalowane środowiska JRE". Upewnij się, że Java Runtime używa oczekiwanej wersji Java.

Jeśli tak, wybierz go, kliknij "Edytuj". Ikona "rt.jar" powinna mieć na wierzchu mały symbol tekstowy (na przykład powinien wyglądać inaczej niż plik dnsns.jar).

Jeśli nie, kliknij "Przywróć domyślne". Jeśli to nie zadziała, sprawdź dokładnie ścieżkę.

To powinno rozwiązać również inne problemy.

Aby sprawdzić, czy dana klasa zawiera symbole debugowania, dekompilować go javap -v (patrz pytanie: Check if Java bytecode contains debug symbols)

Niektóre implementacje Javy pozwoli zignorować symbole debugowania jak zajęcia są ładowane. Może to spowodować "Nieznane źródło" dla klas zawierających symbole. Byłem pewien, że istnieje taka opcja dla Javy Sun, ale nie mogę jej już znaleźć.

+0

+1: dziękuję za pomoc. Byłeś bardzo użyteczny! – Heisenbug

Powiązane problemy