2009-04-19 11 views
12

Eclipse ha una schermata delle configurazioni di corsa con una scheda Percorso di classe.Qual è la differenza tra CLASSPATH "voci di bootstrap" e "voci utente" in Eclipse?

Avevo alcuni vasi elencati nella sezione "voci utente" di questa scheda, ma il mio progetto non è stato eseguito fino a quando non ho duplicato quei file jar nella sezione "voci di bootstrap". Dopo che i vasi sono stati elencati in entrambe le sezioni, il progetto è stato eseguito correttamente.

Perché?

Qual è la differenza tra queste due diverse categorie di impostazioni di Classpath?

risposta

2

È possibile generare il file jar in entrambe le direzioni per estrarli e confrontarli. Sono orribilmente curioso di sapere se il file jar è cambiato quando hai aggiunto la voce. Alcune informazioni su class loading potrebbero offrire alcune informazioni. Il specification for jar files non offre alcun suggerimento.

+1

"Genera il file jar" Non sei sicuro di cosa intendi. –

+0

Interessante. Il link "caricamento della classe" che hai fornito dice: "Quando risolvi una classe nome, il runtime cerca i file in questo ordine: 1. classe bootstrap percorso 2. estensioni 3. utente percorso di classe" che sembra contraddire la mia esperienza dal momento che, nel mio caso, sembra che il percorso classe utente è stato ignorato in fase di esecuzione –

+0

E per quanto riguarda la distinzione dei vasi? È tutto disponibile? – ojblass

2

Uno di questi è per controllare i sorgenti/classpath nell'editor, l'altro è per l'ambiente di runtime.

Penso.

Che diavolo, oggi sono al massimo.

+0

15400/200 = 77 giorni ... bello ... Penso che il segno di spunta dovrebbe muoversi in questo caso. :( – ojblass

+0

Bene, grazie. La mia media è molto meno di 200/giorno però. –

6

La differenza è l'ordine delle loro specifiche nei classloader.

Il percorso di classe bootstrap è gestito dal programma di caricamento classi di primo livello all'avvio della VM che eseguirà l'app. (Da una linea di comando questo è spezzato usando -Xbootclasspath)

Il classpath utente sono voci gestite dal classloader dell'applicazione.

Qualsiasi voce nel percorso di classe bootstrap ha la precedenza sul percorso di classe utente.

Questi sono inizializzati in base al progetto contenente l'applicazione da avviare, ma è possibile modificarli nella configurazione del programma di avvio per l'applicazione che si desidera avviare in eclissi.

Sul motivo per cui non ha funzionato: quali erano i vasi? Erano cose che dovevano essere caricate dalle classi di runtime (come le librerie di sostituzione del parser xml?)

Vedere http://java.sun.com/j2se/1.4.2/docs/tooldocs/findingclasses.html per ulteriori dettagli.

- Scott

Problemi correlati