2010-10-11 18 views
6

In un normale applicazione java sua possibile stampare il contenuto del classpath con:Stampa percorso classe bundle OSGI?

String ss = System.getProperty("java.class.path"); 
System.out.println(ss); 

Ma come faccio a stampare il percorso di classe di un pacchetto OSGI creata usando la procedura guidata Eclipse PDE? Nell'attivatore è possibile ottenere il pacchetto corrente come:

pubblico void start (contesto BundleContext) genera Eccezione { super.start (contesto); plugin = this;

Bundle b = context.getBundle(); 
// java doc: This bundle's class loader is not used to search for entries. 
b.findEntries(path, filePattern, recurse) 

Ma javadoc dice che findEntries NON utilizza il caricatore di classe. C'è un modo semplice per vedere/stampare ciò che si trova nel classpath del pacchetto corrente?

+1

La prima domanda è: perché vuoi farlo? Non esiste una nozione reale di classpath per un pacchetto, ma solo un insieme di classi accessibili. –

+0

Giusto per essere chiari: c'è un'intestazione di bundle nota come Bundle-ClassPath (osgi core 3.2.1.4), ma dato il tuo esempio "java.class.path", probabilmente questo non è ciò che intendi. –

risposta

2

Come altri hanno indicato, non esiste in realtà un "classpath bundle" - questo è il punto centrale di OSGi. :)

Che cosa si può fare è:

  • un'occhiata al intestazioni del vostro pacco per vedere quali pacchetti importa, e se sono tenuti o obbligatoria

  • uso PackageAdmin per trovare pacchetti che esportano pacchetti con un certo nome

Tuttavia AFAIK PackageAdmin è obsoleto e ci sarà un nuovo meccanismo/estesa possa lavorare con cablaggio fascio a 4 .3.

Sembra che la vera motivazione per questo sia la scansione del classpath per trovare le risorse di carico &. Il fatto che questo non sia facilmente possibile è un effetto collaterale del rafforzamento dei confini del modulo: non è possibile avere una recinzione e allo stesso tempo consentire a chiunque di camminare sul prato. C'era un piano per un servizio standard che analizza i pacchetti per conto di un cliente, ma sembra essere stato ritirato (non è sicuro del perché - forse come conseguenza delle nuove cose 4.3).

+0

Stating PackageAdmin è deprecato e lo sta spingendo, dato che non è ancora deprecato nelle ultime specifiche rilasciate (R4.2). –

Problemi correlati