2010-11-11 12 views
5

¿Cómo puede un paquete de Eclipse (por ejemplo, dentro del código de activador) encontrar las instancias de Bundle dependientes en tiempo de ejecución? Me gustaría encontrar los paquetes que Eclipse ha elegido para satisfacer los requisitos de dependencia, no quiero interpretar el manifiesto yo mismo.Busque los paquetes dependientes en Eclipse en tiempo de ejecución

Un ejemplo: me gustaría encontrar todos los recursos llamados "marker.txt" en todos los paquetes de los cuales depende mi paquete actual. También las dependencias transitivas. Para lograr esto, necesito poder encontrar todos estos paquetes para empezar.

Respuesta

4

No hay una manera fácil de determinar la dependencia. La mejor manera es ir a través de la interfaz de PackageAdmin. Consulte las especificaciones OSGi para PackageAdmin y getImportingBundles en particular: http://www.osgi.org/javadoc/r4v42/org/osgi/service/packageadmin/ExportedPackage.html#getImportingBundles()

Debe determinar para todos los paquetes instalados, cuál exporta uno o más paquetes que su paquete está importando. La forma más fácil de lograr esto es llamando al PackageAdmin.getExportedPackages (paquete Bundle) con bundles = null. Esto devuelve una matriz de todos los paquetes exportados. Luego debe iterar de esta matriz y llamar al ExportPackage.getImportingBundles().

0

Puede abrir una consola OSGi y emitir los comandos siguientes:

ss 

Al ver la lista de paquetes, incluyendo el identificador numérico

bundle <id> 

para obtener más información, incluyendo dependencias.

También debe tratar

help 

para obtener más comandos

+1

Él quiere hacer esto programáticamente. –

1

Por favor, vea mi respuesta a this question. 4.3 tendrá una nueva API de cableado de paquetes que permitirá cosas como esta.

Cuestiones relacionadas