I sintomi descrivono perfettamente il caso in cui la classe trovata non ha origine associata (o assegnata).
- È possibile associare i sorgenti per le classi JDK in Preferenze> Java> JRE installato . Se JRE (non JDK) viene rilevato come JRE predefinito da utilizzare, le classi JDK non avranno origini collegate. Si noti che, non tutte le classi JDK hanno fornito origini, alcune di esse sono distribuite solo in forma binaria.
- Le classi dal percorso di compilazione del progetto, aggiunte manualmente, richiedono di collegare manualmente l'origine associata. Il sorgente può risiedere in un file zip o jar, nell'area di lavoro o nel filesystem. Eclipse eseguirà la scansione dello zip, quindi le tue fonti non devono trovarsi nella radice del file di archivio, ad esempio.
- Classi, da dipendenze provenienti da altri plugin (Maven, PDE, ecc.). In questo caso, dipende dal plugin come verrà fornita la fonte.
- PDE richiederà che ogni plug-in abbia il pacchetto XXX.source corrispondente , che contiene l'origine del plug-in. Ulteriori informazioni possono essere trovate qui e qui .
- m2eclipse può recuperare fonti e javadocs per le dipendenze Maven, se disponibili. Questa funzione dovrebbe essere abilitata nelle preferenze di m2eclipse (l'opzione era denominata come " Scarica sorgente e javadocs ".
- Per altri plugin, dovrai consultare la loro documentazione
- Le classi, che vengono caricate dal tuo progetto, vengono automaticamente abbinate alle fonti del progetto.
Ma cosa succede se Eclipse suggerisce ancora di collegare la fonte, anche se ho impostato correttamente le mie classi e le loro fonti:
Questo significa quasi sempre che Eclipse sta trovando la classe da un luogo diverso da quello che ti aspetti. Ispeziona il tuo percorso di ricerca sorgente per vedere dove potrebbe ottenere la classe sbagliata. Aggiorna il percorso in base alle tue scoperte.
Eclipse non trova nulla, quando viene raggiunto il punto di interruzione:
Ciò accade quando il percorso di ricerca del codice sorgente non contiene la classe, che è attualmente caricata in fase di runtime. Anche se la classe si trova nell'area di lavoro, può essere invisibile alla configurazione di avvio, poiché Eclipse segue rigorosamente il percorso di ricerca di origine e allega solo le dipendenze del progetto, che è attualmente sottoposto a debug.
Un'eccezione sono i bundle di debug in PDE . In questo caso, poiché il runtime è composto da più progetti, che non devono dichiarare dipendenze l'uno dall'altro, Eclipse troverà automaticamente la classe nell'area di lavoro, anche se non è disponibile nel percorso di ricerca di origine.
Non riesco a vedere le variabili quando colpisco un punto di interruzione o semplicemente apre la fonte, ma non seleziona la linea di punto di interruzione:
Ciò significa che nel runtime, né la JVM né le classi stesse non dispongono delle informazioni di debug necessarie. Ogni volta che vengono compilate le classi, è possibile allegare informazioni di debug. Per ridurre lo spazio di archiviazione delle classi, a volte queste informazioni vengono omesse, il che rende il debug di tale codice un problema. L'unica possibilità è provare a ricompilare con il debug abilitato.
Il visualizzatore di sorgenti Eclipse mostra linee diverse da quelle effettivamente eseguite:
A volte può mostrare che viene eseguito anche lo spazio vuoto. Ciò significa che i tuoi sorgenti non corrispondono alla tua versione runtime delle classi. Anche se pensi che ciò non sia possibile, lo è, quindi assicurati di impostare i sorgenti corretti. Oppure il tuo runtime corrisponde alle ultime modifiche, a seconda di cosa stai cercando di fare.