Печать OSGI связывает classpath? - PullRequest
       23

Печать OSGI связывает classpath?

6 голосов
/ 11 октября 2010

В обычном Java-приложении можно распечатать содержимое classpath с помощью:

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

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

public void start (контекст BundleContext) выдает исключение { super.start (контекст); плагин = это;

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 Ответ

2 голосов
/ 10 ноября 2010

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

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

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

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

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

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

...