2010-10-11 3 views
6

В обычном приложении Java его можно распечатать содержимое с классами:Печать пула классов OSGI?

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

Но как я печатаю путь к классам из OSGI пучка создан с помощью мастера затмения PDE? В активаторе можно получить текущий пакет как:

public void start (BundleContext context) throws Exception { super.start (context); плагин = это;

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

Но javadoc говорит, что findEntries НЕ использует загрузчик классов. Есть ли простой способ увидеть/распечатать то, что находится в пути к текущему пути пакета?

+1

Первый вопрос: почему вы хотите это сделать? Нет никакого реального понятия пути к классам для пакета, а просто набор доступных классов. –

+0

Просто, чтобы быть ясным: есть заголовок пакета, известный как Bundle-ClassPath (osgi core 3.2.1.4), но, учитывая ваш пример java.class.path, это, вероятно, не то, что вы имеете в виду. –

ответ

2

Как уже указывалось, на самом деле нет такой вещи, как «путь пучка пакетов» - вот в чем смысл OSGi. :)

Что вы можете сделать, это:

  • посмотреть на заголовки вашего комплекта, чтобы увидеть, какие пакеты она импортирует, и необходимы ли они или обязательной

  • использование PackageAdmin найти пакеты, которые экспортируют пакеты с заданным именем

Однако AFAIK PackageAdmin устарела и будет новый/расширенный механизм для работы с расслоением проводке в 4 0,3.

Кажется, что ваша настоящая мотивация для этого - это сканирование классов, чтобы найти & ресурсы для загрузки. Тот факт, что это нелегко, является побочным эффектом применения границ модуля: у вас не может быть забор и в то же время разрешить любому идти по газону. Был план стандартного сервиса, который сканирует пакеты от имени клиента, но это, кажется, было снято (не знаю, почему - возможно, как следствие нового 4.3-го материала).

+0

Утверждение PackageAdmin устарело, толкает его, поскольку он определенно не устарел еще в последних выпущенных спецификациях (R4.2). –

Смежные вопросы