0
的包依賴我有2個OSGi包庫。我想使用API來檢查bundle是否有任何依賴性問題,提供2 obr。我怎樣才能調用API來做到這一點? 看來我可以使用下面的代碼與Felix API來做到這一點。但是我怎樣才能得到RepositoryAdmin對象?如何找到一個OSGi包
RepositoryAdmin repoAdmin = ...
repoAdmin.addRepository(new File("/home/chandler/ws/reliability/testParent/test.eba/target/localobr/repository.xml").toURI().toURL());
repoAdmin.addRepository(new File("/home/chandler/geronimo3/var/obr.xml").toURI().toURL());
List<Repository> repos = new ArrayList<Repository>();
for(Repository repo : repoAdmin.listRepositories()) {
repos.add(repo);
}
repos.add(repoAdmin.getSystemRepository());
repos.add(getLocalRepository(repoAdmin));
Resolver resolver = repoAdmin.resolver(repos.toArray(new Repository[0]));
Resource resources[] = repoAdmin.discoverResources("(&(presentationname=*)(symbolicname=com.chandler.app.osgi.test))");
resolver.add(resources[0]);
boolean resolved = resolver.resolve();
是的,它安裝在Eclipse中。我可以通過以下代碼獲取RepositoryAdmin ServiceTracker m_tracker = new ServiceTracker(ctx, \t \t \t \t RepositoryAdmin.class.getName(),null); \t \t m_tracker.open(); // \t \t爲(捆B:ctx.getBundles()){// \t \t \t如果(b.getSymbolicName()包含( // \t \t \t \t \t 「org.apache.felix.bundlerepository」 )){// \t \t \t \t b.start(); // \t \t \t} // \t \t} \t \t RepositoryAdmin repoAdmin =(RepositoryAdmin)m_tracker.getService(); –
是的,它安裝在Eclipse中。我可以得到RepositoryAdmin。但是,當我嘗試解析一個包時,返回值是錯誤的。和決心期間,第一不滿足要求是 「捆綁:(&(symbolicname = system.bundle))」。我應該如何配置system.bundle? –