Domanda

In Eclipse (Ganimede) sto eseguendo il debug di un codice che utilizza Apache Commons HttpClient e vorrei entrare nel codice HttpClient. Ho scaricato il codice sorgente e ho tentato di collegarlo normalmente (fare clic tenendo premuto il tasto CTRL sul nome del metodo e utilizzare il pulsante Allega sorgente). Ho provato a collegare sia come file esterno che come cartella esterna senza successo. Ho collegato il sorgente prima senza problemi e attualmente posso entrare nel codice sorgente di Hibernate con successo.

Ho persino provato a modificare direttamente il file .classpath per aggiungere manualmente sourcepath. Ancora niente fortuna. Aggiornare il progetto, fare una build pulita, chiudere e riaprire Eclipse non risolve il problema. Frustrante, Eclipse non fornisce alcun messaggio di errore; semplicemente non allega la fonte.

Ecco le voci in .claspath:

<!-- Hibernate. Works -->
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/hibernate.jar" sourcepath="D:/Data/Download/hibernate-3.2.2.ga/hibernate-3.2/src"/>

<!-- Commons HttpClient. Will not attach -->
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/commons-httpclient.jar" sourcepath="D:/Data/Download/commons-httpclient-3.1/src/java"/>

Ho provato a cambiare il percorso in D: /Data/Download/commons-httpclient-3.1/src e neanche quello funziona.

La struttura delle directory è:

D
  Data
    Download
      commons-httpclient-3.1
        src
          java
            org
              apache
                commons
                  httpclient
                    AutoCloseInputStream.java
                    ... (and so forth)
È stato utile?

Soluzione

Prova a indicarlo direttamente in una directory contenente il pacchetto di livello superiore, " D: /Data/Download/commons-httpclient-3.1/src/java" per te. Ciò che ha funzionato per me è stato la creazione di un nuovo file zip src contenente " org " cartella e tutto il resto.

Ecco la mia voce .classpath, (che funziona per me) nel caso in cui aiuti:

<classpathentry kind="lib" path="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1.jar" sourcepath="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1-src.zip"/>

Altri suggerimenti

Ho scoperto che a volte, fai riferimento alla directory che ritieni sia corretta, e quindi afferma ancora che non riesce a trovare il file nella fonte allegata blah blah.

In questi casi, ho capito che l'ultimo elemento del percorso era "quot". La semplice rimozione di questo elemento path (indicando quindi un livello sopra il percorso effettivo in cui si trova la cartella " org " o " com ") magicamente lo fa funzionare.

In qualche modo, Eclipse sembra implicare questo "src" elemento path, se presente, e se lo hai incluso nel percorso sorgente, Eclipse si strozza. O qualcosa del genere.

Prova ad allegare src.zip invece di src decompresso?

Prova ad aggiungerlo al percorso di origine della configurazione di avvio.

Il collegamento di origini non è tutto ciò che è necessario per entrare in una libreria sul percorso di classe; quella libreria deve anche essere compilata con simboli di debug. Questo di solito non è un problema, dal momento che la maggior parte delle librerie Java sono compilate e distribuite in questo modo, ma come hai scoperto, alcune di esse non lo sono.

È interessante notare che puoi effettivamente passare a librerie esterne anche senza la fonte collegata, non puoi vedere le fonti riga per riga (tutte le informazioni di debug funzionano ancora).

Puoi " correggere " questo problema compilando una versione personalizzata di Commons HttpClient (non troppo difficile), o semplicemente saltare l'intero "passo nella libreria" idea. Come pratica di sviluppo generale, entrare in librerie di terze parti raramente fornirà informazioni utili. L'ho fatto forse una o due volte negli ultimi dieci anni, e in entrambi i casi non mi è mai stato più vicino a risolvere il dilemma a portata di mano.

Penso, problema nei simboli spaziali (o localizzati) nel percorso dell'archivio sorgente. Prova a spostarlo in un altro posto con un percorso semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top