2009-05-06 7 views
7

Sto utilizzando Eclipse 3.4.2 per sviluppare il mio codice. Come parte della definizione del mio progetto, faccio riferimento a una libreria di utilità a cui ho allegato il codice sorgente. Fin qui, tutto bene. Posso vedere quell'origine quando richiama le classi dalla libreria e mentre eseguo il debug.Eclipse: è possibile modificare il codice sorgente Java conosciuto tramite il codice sorgente "allegato"

Ora, tuttavia, vorrei apportare una modifica a una delle classi mantenendo comunque tutte le funzionalità dell'Editor Java di Eclipse (in particolare, suggerimenti sugli strumenti e soluzioni rapide). Queste funzionalità sembrano funzionare quando visualizzo la fonte (posso CTRL + LClick attraverso i nomi dei metodi per esempio), ma è di sola lettura. D'altra parte posso aprire esplicitamente il file sorgente che mi consentirà di modificarlo, ma perdo tutte le funzionalità di modifica "intelligenti".

Recentemente sono passato a Eclipse da IntelliJ dove era possibile, quindi spero che sia anche in Eclipse. Si noti che, sebbene potessi semplicemente includere il codice come progetto nel mio spazio di lavoro, preferirei non farlo. L'area di lavoro è già abbastanza grande e non voglio rallentare ulteriormente Eclipse aggiungendo progetti che raramente potrei mai toccare.

risposta

7

Non sono sicuro di aver capito la tua domanda. Quando aggiungi una libreria precompilata al tuo percorso di costruzione dei progetti (il JAR) e allega il codice sorgente a questo JAR, Eclipse ti mostrerà il codice sorgente quando clicchi su un dominio .class all'interno del JAR. Lo stesso vale per il debugger, che consentirà anche di scorrere le righe di codice nell'origine, se le classi del JAR sono state compilate con le informazioni sul numero di riga.

Ora quello che sembra voler fare è modificare le classi all'interno del JAR (la vista sorgente è solo una sovrapposizione che può anche essere disattivata, se si collega una versione diversa della sorgente), che non è possibile, perché sono racchiusi in forma binaria nell'archivio JAR - anche se Eclipse è abbastanza intelligente da visualizzarli individualmente.

Immagino che ci si aspetterebbe che le modifiche vengano scambiate a caldo nel programma in esecuzione dal debugger. Questo può essere fatto solo tramite una ricompilazione una volta che hai finito le modifiche. Solitamente Eclipse lo fa automaticamente quando si salva un file sorgente Java. Dato che il tuo file sorgente non fa parte dello spazio di lavoro (o di una cartella esterna dichiarata esplicitamente come sorgente Java), non lo farà ricompilare e scambiare.

Suggerirei di includere la fonte della libreria esterna come progetto in Eclipse e non preoccuparti troppo delle prestazioni - lavoro con 3.4.2 ogni giorno e il mio spazio di lavoro ha circa 45 progetti aperti con diverse 10.000 classi e milioni di righe di codice. Assegno un Gigabyte di RAM a Eclipse VM e non ho problemi con quello su una macchina Core2Duo 2.6GHz.

+0

Non è tanto che mi aspetto che Eclipse "sostituisca a caldo" le eventuali modifiche apportate al sistema durante l'esecuzione. Sto dicendo a Eclipse di ottenere la forma "costruita" delle classi da quel JAR e mi aspetterei che facesse proprio questo (così come è). In realtà è solo questione di avere tutta l '"assistenza" fornita dall'editor Java se decido di dover modificare una classe che ho visto includere in formato binario. Buono a sapersi sui limiti delle dimensioni - la nostra base di codice è quasi la stessa e soffoca IntelliJ. – sfitts

+0

Basta aggiungere il codice sorgente come progetto separato a Eclipse, quindi andare avanti e modificare –