2011-06-01 13 views
7

Mentre discute another question ho chiesto, @Aaron Digulla ha sottolineato quanto segue:Come posso verificare lo stato del simbolo di debug con Eclipse?

Se è stato installato l'SDK Java, ci dovrebbe essere un file "src.zip" nella directory principale dell'installazione di Java. Se manca, scarica nuovamente Java. Eclipse dovrebbe trovare automaticamente la fonte e mostrarla all'utente quando si apre il tipo JTable (o quando si fa clic sulla linea nella traccia dello stack).

Il file src.zip è presente per me, ma ancora non può accedere alla fonte di JTable come @Aaron detto. Quale potrebbe essere il problema? Come posso risolvere questo con Eclipse?

La "fonte sconosciuta" mi preoccupa, però. significa che la tua versione di Java non ha simboli di debug. A) utilizzare un SDK durante lo sviluppo di , b) che l'SDK contenga i simboli di debug , c) non dire al comando java di rimuovere i simboli di debug quando carica le classi.

a) Sto usando Eclipse, perché non dovrei usare SDK?

b) Come faccio a sapere se il mio SDK contiene i simboli di debug? E se così non fosse, come posso aggiungerli?

c) Come posso controllare se Eclipse sta dicendo java per mettere a nudo i simboli di debug?

Scusate per queste domande banali, ma mi sento come se non capisco completamente il processo di sviluppo Java.

+0

Hai aperto 'src.zip'? Cosa c'è dentro? – Pops

+0

@Lord Torgamus: aperto, sì. Ci sono fonti – Heisenbug

+0

Allora perché non puoi accedere all'origine di 'JTable'? Si prega di essere più specifici. – Pops

risposta

6

a) Eclipse viene fornito con il proprio compilatore Java, quindi se si utilizza Java Runtime Environment, non si verificheranno molti problemi, ad eccezione degli extra come jarsigner e probabilmente il codice sorgente JRE potrebbe non essere presente. Il modo migliore per verificare la tua installazione è attraverso il tuo gestore di pacchetti; tuttavia, se si è installato con altri mezzi, un'attenta osservazione della directory può in genere differenziare i due (vedere di seguito).

b) librerie JRE presentano tipicamente senza simboli di debug presente. Le librerie SDK in genere li hanno. Il debug di Java viene eseguito avviando la JVM con le opzioni della riga di comando che aprono una porta di debug. L'SDK comunica con la JVM richiedendo l'impostazione dei breakpoint tramite questa porta. Successivamente, se si decide di eseguire il JVM, invia anche i comandi di debug di step/jump/rewind attraverso questa porta. I simboli di "debugging" sono in realtà tabelle bytecode JVM, che fanno riferimento a quale linea di codice sorgente è in effetto partendo da una particolare istruzione bytecode. Ciò consente ai debugger di associare i bytecode in esecuzione ai numeri di riga nel codice sorgente originale.

c) Verificare tramite (dal menu) Finestra-> Preferenze (sulla colonna del selettore) espandere "Java", espandere "Costruisci percorso" in "Java" e selezionare "Variabili ClassPath". Si vedrà un paio di variabili, tra cui uno chiamato "JRE_SRC", che dovrebbe puntare al file src.zip contenente il pubblico di fronte a JRE codice sorgente della libreria. È una buona idea verificare JRE_LIB allo stesso tempo.

Una directory home JDK contiene in genere una sottodirectory "bin" e una sottodirectory "jre", quindi se si visualizza solo una sottodirectory "bin", le probabilità sono buone in una directory home di JRE. Con questa conoscenza, spero che sarai in grado di capire il resto.

+0

+1 grazie mille per l'aiuto. Ora è tutto più chiaro. JRC_SRC è vuoto, lo aggiusterò. Solo un'altra domanda: penso che sto usando le librerie JRE non l'SDK, come posso cambiarlo? – Heisenbug

+0

@ 0verbose, prima scaricare il JDK e installarlo. Se si utilizza Linux, Windows o Solaris, scaricare SUN/Oracle JDK. Su qualcos'altro, fare riferimento alle istruzioni del fornitore per il JDK. Quindi prendi nota della directory "root" del JDK. Dallo stesso contesto "Java" nella finestra di configurazione, selezionare "JRE installati" e aggiungere la directory principale JDK. Seleziona la casella accanto a JRE per renderla predefinita per i nuovi progetti. Quindi torna indietro e imposta il livello di compilazione "Compilatore" su quello del tuo JDK. Infine, potrebbe essere necessario impostare il percorso di generazione dei progetti esistenti per corrispondere alle nuove impostazioni. –

1

Passare alle preferenze (Finestra -> Preferenze) e digitare "JRE" nel campo di ricerca.

Selezionare "JRE installati". Assicurati che Java Runtime utilizzi la versione di Java che ti aspetti.

In tal caso, selezionarlo, fare clic su "Modifica". L'icona per "rt.jar" dovrebbe avere un piccolo simbolo di testo sopra (dovrebbe apparire diverso da dnsns.jar, per esempio).

In caso contrario, fare clic su "Ripristina impostazioni predefinite". Se ciò non funziona, ricontrolla il percorso.

Questo dovrebbe risolvere anche altri problemi.

Per verificare se una classe contiene i simboli di debug, decompilare con javap -v (vedi questa domanda: Check if Java bytecode contains debug symbols)

Alcune implementazioni Java consentono di ignorare i simboli di debug come classi vengono caricate. Ciò può causare "Fonte sconosciuta" per le classi che contengono simboli. Ero sicuro che esistesse una tale opzione per Sun's Java, ma non riesco a trovarla più.

+0

+1: grazie per l'aiuto. Sei stato molto molto utile! – Heisenbug