Eclipse P2 IUQuery总是空的结果

时间:2015-11-02 13:44:34

标签: eclipse eclipse-pde p2

我尝试使用eclipse P2启用我的工具,在eclipse启动时自动更新。在这样做时,我想使用UpdateOperation,它只适用于" my"具有id" my.feature.id"的功能。每当在eclipse安装中发出此查询时,它都会有一个空结果,因此无需更新。

那么:如何使用QueryUtil权限获取仅包含我的更新功能的集合作为UpdateOperation的输入?

当想要在eclipse启动时启动更新时调用以下方法:

public class P2Util {
    public static IStatus checkForUpdates(IProvisioningAgent agent, IProgressMonitor monitor) {
        ProvisioningSession session = new ProvisioningSession(agent);
        IQuery<IInstallableUnit> query = QueryUtil.createLatestQuery(QueryUtil.createIUQuery("my.feature.id"));
        UpdateCheckActivator.info("Update Query Expression: " + query.getExpression());
        IProfileRegistry registry= (IProfileRegistry)agent.getService(IProfileRegistry.SERVICE_NAME);
        IProfile profile= registry.getProfile(IProfileRegistry.SELF);
        IQueryResult<IInstallableUnit> result = profile.query(query, monitor);
        Set<IInstallableUnit> unitsForUpdate = result.toUnmodifiableSet();
         UpdateOperation operation = new UpdateOperation(session, unitsForUpdate);
    }
}

1 个答案:

答案 0 :(得分:0)

解决方案非常简单但最初令人困惑。尝试使用“my.feature.id”查找功能的查询是查询错误的ID。

在我的功能的 feature.xml 中,它是“my.feature.id”,但可安装单元出于明显的原因而获得后缀“feature.group”。如果将其添加到查询中的id,则会得到正确的结果,并且更新操作会按预期成功。