2010-11-11 19 views
5

In che modo un bundle Eclipse (ad esempio nel codice dell'attivatore) trova le istanze del pacchetto dipendente in fase di esecuzione? Mi piacerebbe trovare i pacchetti che Eclipse ha scelto per soddisfare i requisiti di dipendenza, non voglio interpretare me stesso.Trova i pacchetti dipendenti in Eclipse in fase di esecuzione

Un esempio: mi piacerebbe trovare tutte le risorse denominate "marker.txt" in tutti i pacchetti su cui il mio pacchetto attuale dipende. Anche le dipendenze transitive. Per realizzare questo ho bisogno di essere in grado di trovare tutti questi pacchetti per cominciare.

risposta

4

Non esiste un modo semplice per determinare la dipendenza. Il modo migliore è passare attraverso l'interfaccia di PackageAdmin. Vedere le specifiche OSGi per PackageAdmin e getImportingBundles in particolare: http://www.osgi.org/javadoc/r4v42/org/osgi/service/packageadmin/ExportedPackage.html#getImportingBundles()

È necessario determinare per tutti i pacchetti installati, quale esporta uno o più pacchetti che il pacchetto sta importando. Il modo più semplice per ottenere ciò è chiamare PackageAdmin.getExportedPackages (Bundle bundle) con bundle = null. Questo restituisce una matrice di tutti i pacchetti esportati. È quindi necessario iterare di questo array e chiamare ExportPackage.getImportingBundles().

0

È possibile aprire una console OSGi ed eseguire i seguenti comandi:

ss 

Per la lista dei pacchetti, tra cui l'ID numerico

bundle <id> 

per avere maggiori informazioni, incluse le dipendenze.

Si dovrebbe anche provare

help 

per ottenere più comandi

+1

Vuole farlo a livello di programmazione. –

1

Si prega di vedere la mia risposta a this question. 4.3 avrà una nuova API di cablaggio bundle che consentirà cose come questa.

Problemi correlati