OSGi: Перерасчет пакета импорта JAR программно

#osgi #bnd #bndtools

Вопрос:

Я хочу программно пересчитать «Импортный пакет» банки OSGi. Я пытаюсь использовать анализатор bnd.

     try(Analyzer analyzer = new Analyzer()) {
        analyzer.setJar(new File(filename));
        return analyzer.getImportPackage();
    }
 

Это возвращает (неправильный) существующий импорт MANIFEST.MF. Как я могу программно пересчитать «Пакет импорта» Jar OSGi?

Обновление Добавления, как предложил BJ Hargrave calMainfest (), не работает:

 try(Analyzer analyzer = new Analyzer()) {
    analyzer.setJar(new File(filename));
    analyzer.calcManifest(); 
    return analyzer.getImportPackage();
}
 

Похоже, он использует существующий файл MANIFEST.MF, содержащийся в банке.
С уважением
Кишо

Ответ №1:

Вам нужно позвонить calcManifest() , чтобы вычислить новый манифест. В противном случае он просто использует существующий манифест.

Комментарии:

1. После вызова calcManifest пакеты импорта по — прежнему пусты.

2. @bl-hargrave При использовании calcManifest() все еще кажется, что он использует существующий МАНИФЕСТ. MF, у которого нет пакета импорта (он использует обязательные пакеты)