OSGi:以编程方式重新计算 JAR 的导入包

问题描述

我想以编程方式重新计算 Osgi Jar 的“导入包”。我尝试使用 bnd 分析器。

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

这将返回 MANIFEST.MF 的(错误的)现有导入。如何以编程方式重新计算 Osgi Jar 的“导入包”?

更新 添加为 BJ Hargrave calMainfest() 建议不起作用:

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

它似乎使用了 Jar 中包含的现有 MANIFEST.MF。 最好的祝福 纪章

解决方法

您需要调用 func require<T>(_ name: String) throws -> T { guard let index = self.index(forKey: name) else { throw DictionaryExtractionError.missingProperty(name) } guard let t = self[index].value as? T else { throw DictionaryExtractionError.casting(name) } return t } 来计算新的清单。否则它只会使用现有的清单。